#include <bits/stdc++.h>
using namespace std;
struct Var {
string type, str_val;
unsigned int int_val, char_val;
};
map<string, Var> vars;
void pro(const string& line) {
stringstream ss(line);
string cmd;
ss >> cmd;
if (cmd == "string" || cmd == "int" || cmd == "char") {
string var_name, val;
ss >> var_name;
if (cmd == "string") {
ss >> val;
Var v;
v.type = "string";
v.str_val = val;
vars[var_name] = v;
} else if (cmd == "int") {
unsigned int x;
ss >> x;
Var v;
v.type = "int";
v.int_val = x;
vars[var_name] = v;
} else if (cmd == "char") {
char c;
ss >> c;
Var v;
v.type = "char";
v.char_val = (unsigned char)c;
vars[var_name] = v;
}
} else if (cmd == "set") {
string var_name, op, val;
ss >> var_name >> op;
if (op == "value") {
Var& v = vars[var_name];
if (v.type == "string") {
ss >> val;
v.str_val = val;
} else if (v.type == "int") {
unsigned int x;
ss >> x;
v.int_val = x;
} else if (v.type == "char") {
char c;
ss >> c;
v.char_val = (unsigned char)c;
}
} else if (op == "variable") {
string other_var;
ss >> other_var;
Var& v = vars[var_name];
Var& other = vars[other_var];
if (v.type == "string") {
v.str_val = other.str_val;
} else if (v.type == "int") {
v.int_val = other.int_val;
} else if (v.type == "char") {
v.char_val = other.char_val;
}
}
} else if (cmd == "output") {
string op, val;
ss >> op;
if (op == "value") {
string rest;
getline(ss, rest);
size_t start = rest.find_first_not_of(' ');
if (start != string::npos) {
rest = rest.substr(start);
}
cout << rest << endl;
} else if (op == "variable") {
string var_name;
ss >> var_name;
Var& v = vars[var_name];
if (v.type == "string") {
cout << v.str_val << endl;
} else if (v.type == "int") {
cout << (int)v.int_val << endl;
} else if (v.type == "char") {
cout << "[ASCII " << (int) ((int8_t) v.char_val) << "]" << endl;
}
}
} else if (cmd == "add") {
string var_name, op;
ss >> var_name >> op;
Var& v = vars[var_name];
if (op == "value") {
if (v.type == "string") {
string val;
ss >> val;
v.str_val += val;
} else if (v.type == "int") {
unsigned int x;
ss >> x;
v.int_val += x;
} else if (v.type == "char") {
int x;
ss >> x;
v.char_val = (unsigned char)((unsigned int)v.char_val + x);
}
} else if (op == "variable") {
string other_var;
ss >> other_var;
Var& other = vars[other_var];
if (v.type == "string") {
v.str_val += other.str_val;
} else if (v.type == "int") {
v.int_val += other.int_val;
}
}
} else if (cmd == "minus") {
string var_name, op;
ss >> var_name >> op;
Var& v = vars[var_name];
if (op == "value") {
if (v.type == "int") {
unsigned int x;
ss >> x;
v.int_val -= x;
} else if (v.type == "char") {
int x;
ss >> x;
v.char_val = (unsigned char)((unsigned int)v.char_val - x);
}
} else if (op == "variable") {
string other_var;
ss >> other_var;
Var& other = vars[other_var];
if (v.type == "int") {
v.int_val -= other.int_val;
}
}
} else if (cmd == "for") {
int times;
ss >> times;
string rest;
getline(ss, rest);
size_t start = rest.find_first_not_of(' ');
if (start != string::npos) {
rest = rest.substr(start);
}
for (int i = 0; i < times; ++i) {
pro(rest);
}
}
}
int main() {
freopen("interpretation.in", "r", stdin);
freopen("interpretation.out", "w", stdout);
int n;
cin >> n;
cin.ignore();
for (int i = 0; i < n; ++i) {
string line;
getline(cin, line);
pro(line);
}
return 0;
}