#include #include #include using namespace std; const long long MAX = 1000*1000*1000; int s[1000+10],n; int m; char instr[100*1000+10][5]; int arg[100*1000+10]; void scase() { m = 0; while(true) { scanf("%s",instr[m]); if (instr[m][0]=='Q') exit(0); if (instr[m][0]=='N') scanf("%d",&arg[m]); if (instr[m][0]=='E') { m++; break; } m++; } int Z; scanf("%d",&Z); while(Z--) { scanf("%d",&s[0]); n = 1; bool ok = true; for(int i=0;(ok)&&(i MAX) { ok = false; } n--; } continue; } if (instr[i][0]=='D' && instr[i][1]=='U') { if (n==0) ok = false; else { s[n] = s[n-1]; n++; } continue; } if (instr[i][0]=='S' && instr[i][1]=='W') { if (n<2) ok = false; else swap(s[n-2],s[n-1]); continue; } if (instr[i][0]=='S' && instr[i][1]=='U') { if (n<2) ok = false; else { s[n-2] -= s[n-1]; if (s[n-2] < -MAX || s[n-2] > MAX) { ok=false; } n--; } continue; } if (instr[i][0]=='M' && instr[i][1]=='U') { if (n<2) ok = false; else { long long result = s[n-2] * (long long) s[n-1]; if (result < -MAX || result > MAX) { ok = false; continue; } s[n-2] *= s[n-1]; n--; } continue; } if (instr[i][0]=='M' && instr[i][1]=='O') { if (n<2) ok = false; else { if (s[n-1] == 0) ok = false; else s[n-2] %= s[n-1]; n--; } continue; } if (instr[i][0]=='D' && instr[i][1]=='I') { if (n<2) ok = false; else { if (s[n-1]==0) { ok = false; } else s[n-2] /= s[n-1]; n--; } continue; } } if ((!ok) || (n!=1)) { printf("ERROR\n"); } else { printf("%d\n",s[0]); } } printf("\n"); } int main() { for(;;) scase(); }