#include<bits/stdc++.h>
using namespace std;

typedef struct{
	int raw;
	string com;
	string var1, var2, var3;
} P;

int array[50][5] = {};
map<string, bool> used;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	for(int i = 0;i < 50;++i){
		for(int j = 0;j < 5;++j){
			array[i][j] = -1;
		}
	}
	
	int n;
	bool inf_flag = false;
	vector<P> vec;
	map<string, int> ma;
	vector<string> st;
	
	cin >> n;
	for(int i = 1;i <= n;++i){
		P temp;
		cin >> temp.raw >> temp.com;
		
		if(temp.com == "ADD" || temp.com == "SUB"){
			cin >> temp.var1 >> temp.var2 >> temp.var3;
			if("a" <= temp.var1 && temp.var1 <= "z"){
				if(used[temp.var1] == false){
					st.push_back(temp.var1);
					used[temp.var1] = true;
				}
			}			
			if("a" <= temp.var2 && temp.var2 <= "z"){
				if(used[temp.var2] == false){
					st.push_back(temp.var2);
					used[temp.var2] = true;
				}
			}			
			if("a" <= temp.var3 && temp.var3 <= "z"){
				if(used[temp.var3] == false){
					st.push_back(temp.var3);
					used[temp.var3] = true;
				}
			}
		}else if(temp.com == "SET" || temp.com == "IF"){
			cin >> temp.var1 >> temp.var2;
			if("a" <= temp.var1 && temp.var1 <= "z"){
				if(used[temp.var1] == false){
					st.push_back(temp.var1);
					used[temp.var1] = true;
				}
			}
			if("a" <= temp.var2 && temp.var2 <= "z"){
				if(used[temp.var2] == false){
					st.push_back(temp.var2);
					used[temp.var2] = true;
				}
			}
		}
		
		vec.push_back(temp);
	}
	
	int now = 0;
	while(1){
		if(vec[now].com == "HALT"){
			break;
		}else if(vec[now].com == "ADD"){
			if("a" <= vec[now].var3 && vec[now].var3 <= "z"){ // 変数同士
				if(ma[vec[now].var2] + ma[vec[now].var3] >= 16){
					break;
				}
				ma[vec[now].var1] = ma[vec[now].var2] + ma[vec[now].var3];
			}else{
				int temp = atoi(vec[now].var3.c_str());
				if(ma[vec[now].var2] + temp >= 16){
					break;
				}
				ma[vec[now].var1] = ma[vec[now].var2] + temp;
			}
		}else if(vec[now].com == "SUB"){
			if("a" <= vec[now].var3 && vec[now].var3 <= "z"){ // 変数同士
				if(ma[vec[now].var2] - ma[vec[now].var3] < 0){
					break;
				}
				ma[vec[now].var1] = ma[vec[now].var2] - ma[vec[now].var3];
			}else{
				int temp = atoi(vec[now].var3.c_str());
				if(ma[vec[now].var2] - temp < 0){
					break;
				}
				ma[vec[now].var1] = ma[vec[now].var2] - temp;
			}
		}else if(vec[now].com == "SET"){
			if("a" <= vec[now].var2 && vec[now].var2 <= "z"){ // 変数同士
				ma[vec[now].var1] = ma[vec[now].var2];
			}else{
				int temp = atoi(vec[now].var2.c_str());
				ma[vec[now].var1] = temp;
			}
		}else if(vec[now].com == "IF"){
			bool flag = false;
			if(ma[vec[now].var1] > 0){
				// IF命令を読んだ際に変数の情報を保存しておく
				bool tr_flag = true;
				for(int i = 0;i < st.size();++i){
					if(array[now][i] != ma[st[i]]){
						array[now][i] = ma[st[i]];
						tr_flag = false;
					}
				}
				if(tr_flag){
					cout << "inf" << endl;
					inf_flag = true;
					break;
				}
			
				int temp = atoi(vec[now].var2.c_str());
				for(int i = 0;i < vec.size();++i){
					if(vec[i].raw == temp){
						now = i - 1;
						flag = true;
						break;
					}
				}
				if(!flag){
					break;
				}
			}
			
			/*
			nowより上の行にジャンプする際、全ての変数の内容を保存しておき、
			もう一度ジャンプするときにその内容全てに変化がなかったら
			無限ループ。
			全ての変数でも5つを超えないため、オーダーはたぶん大丈夫
			*/
		}
		++now;
/*		
		cout << "============================" << endl;
		for(int i = 0;i < st.size();++i){
			cout << st[i] << '=' << ma[st[i]] << endl;
		}
*/		
		if(now == vec.size()){
			break;
		}
	}
	
	/*
	for(set<string>::iterator itr = st.begin();itr != st.end();itr++){
      cout << *itr << '=' << ma[*itr] << endl;;
    }
	*/
	
	if(!inf_flag){
		sort(st.begin(), st.end());
		for(int i = 0;i < st.size();++i){
			cout << st[i] << '=' << ma[st[i]] << endl;
		}
	}
	return 0;
}



Measured memory_bytes: 3288