#include #include #include #include #include #include using namespace std; int main() { while (true) { vector machine; vector args; // nacitame masinu int l; for (l = 0; 1; l++) { char buffer[20]; scanf("%s", buffer); string inst = buffer; if (inst == "QUIT") return 0; if (inst == "END") break; long long myarg = 0; if (inst == "NUM") scanf("%lld", &myarg); machine.push_back(inst); args.push_back(myarg); } int Q; scanf("%d", &Q); while(Q--) { long long vstup; scanf("%lld", &vstup); stack S; S.push(vstup); int i; for (i = 0; i < machine.size(); i++) { if (machine[i] == "NUM") { S.push(args[i]); } if (machine[i] == "POP") { if (S.empty()) break; S.pop(); } if (machine[i] == "INV") { if (S.empty()) break; long long v = S.top(); S.pop(); S.push(-v); } if (machine[i] == "DUP") { if (S.empty()) break; long long v = S.top(); S.pop(); S.push(v); S.push(v); } if (machine[i] == "SWP") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); S.push(u); S.push(v); } if (machine[i] == "ADD") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); S.push(v+u); } if (machine[i] == "SUB") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); S.push(v-u); } if (machine[i] == "MUL") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); S.push(v*u); } if (machine[i] == "DIV") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); if (u == 0) break; if (u < 0) u = -u, v = -v; S.push(v/u); } if (machine[i] == "MOD") { if (S.size() < 2) break; long long u = S.top(); S.pop(); long long v = S.top(); S.pop(); if (u == 0) break; if (u < 0) u = -u, v = -v; S.push(v%u); } if (!S.empty()) { long long m = S.top(); if (llabs(m) > 1000000000LL) break; } } if (i != machine.size() || S.size() != 1) { printf("ERROR\n"); } else { printf("%lld\n", S.top()); } } printf("\n"); } }