#include #include #include #include #include #include #include #include #include #include using namespace std; #define FI first #define SE second #define X first #define Y second #define ST first #define ND second #define MP make_pair #define PB push_back typedef vector VI; typedef pair PII; typedef long long LL; typedef long double LD; typedef double D; #define REP(i,n) for(int i=0;i<(n);i++) #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define FORD(i,a,b) for(int i=(a);i>=(b);i--) #define FORE(a,b) for(VAR(a,(b).begin());a!=(b).end();a++) #define VAR(a,b) __typeof(b) a=(b) #define SIZE(a) ((int)(a).size()) #define ALL(x) (x).begin(),(x).end() #define CLR(x,a) memset(x,a,sizeof(x)) vector v; int ee; int e[1013], qq[101013]; const int inf = (int)1e9; bool wykonaj() { FORE(i, v) if(*i == "NUM") e[ee++] = qq[i - v.begin()]; else if(*i == "POP") { if(ee < 1) return 0; ee--; } else if(*i == "INV") { if(ee < 1) return 0; e[ee-1] *= -1; } else if(*i == "DUP") { if(ee < 1) return 0; e[ee] = e[ee-1]; ee++; } else if(*i == "SWP") { if(ee < 2) return 0; swap(e[ee-1], e[ee-2]); } else if(*i == "ADD") { if(ee<2) return 0; LL c = e[ee-2] + e[ee-1]; if(c > inf || c < -inf) return 0; e[ee-2] = c; ee--; } else if(*i == "SUB") { if(ee<2) return 0; LL c = e[ee-2] - e[ee-1]; if(c > inf || c < -inf) return 0; e[ee-2] = c; ee--; } else if(*i == "MUL") { if(ee<2) return 0; LL c = e[ee-2] * e[ee-1]; if(c > inf || c < -inf) return 0; e[ee-2] = c; ee--; } else if(*i == "DIV") { if(ee<2 || !e[ee-1]) return 0; LL c = e[ee-2] / e[ee-1]; if(c > inf || c < -inf) return 0; e[ee-2] = c; ee--; } else if(*i == "MOD") { if(ee<2 || !e[ee-1]) return 0; LL c = e[ee-2] % e[ee-1]; if(c > inf || c < -inf) return 0; e[ee-2] = c; ee--; } return 1; } int main() { char buf[13]; while(1) { v.clear(); while(1) { scanf("%s",buf); if(!strcmp(buf, "QUIT")) return 0; if(!strcmp(buf, "END")) break; if(!strcmp(buf, "NUM")) { int x; scanf("%d",&x); qq[SIZE(v)] = x; } v.PB(buf); } int n; scanf("%d",&n); REP(i, n) { scanf("%d",&e[0]); ee = 1; if(!wykonaj() || ee != 1) puts("ERROR"); else printf("%d\n", e[0]); } puts(""); } return 0; }