#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <cstring>
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<int> VI;
typedef pair<int,int> 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<string> 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 = 1LL * 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;
}