#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define PUSH_INT    0
#define COMPILE_ME  1
#define RUN_ME      2
#define COLON       3
#define IMMEDIATE   4
#define _READ       5
#define FETCH       6
#define STORE       7
#define MINUS       8
#define STAR        9
#define DIVIDE      10
#define LT_ZERO     11
#define EXIT        12
#define ECHO        13
#define KEY         14
#define _PICK       15


char string[5000];
int m[20000] = { 32 }, L = 1, I, T[500], *S = T, t = 64, w, tos;

void a(int x) {
    m[m[0]++] = L;
    L = *m - 1;
    m[m[0]++] = t;
    m[m[0]++] = x;
    scanf("%s", string + t);
    t += strlen(string + t) + 1;
}


void execute(int x) {
    switch (m[x++]) {
        case PUSH_INT:      *++S = tos; tos = m[I++]; break;
        case COMPILE_ME:    m[m[0]++] = x; break;
        case RUN_ME:        m[++m[1]] = I; I = x; break;
        case COLON:         a(1); m[m[0]++] = 2; break;
        case IMMEDIATE:     *m -= 2; m[m[0]++] = 2; break;
        case _READ:         for (
                                w = scanf("%s", string) < 1 ? exit(0), 0 : L; 
                                strcmp(string, &string[m[w + 1]]);
                                w = m[w]
                            );
                            w - 1 ? 
                                execute(w + 2) : 
                                (m[m[0]++] = 2, m[m[0]++] = atoi(string)); 
                            break;
        case FETCH:         tos = m[tos]; break;
        case STORE:         m[tos] = *S--; tos = *S--; break;
        case MINUS:         tos = *S-- - tos; break;
        case STAR:          tos *= *S--; break;
        case DIVIDE:        tos = *S-- / tos; break;
        case LT_ZERO:       tos = 0 > tos; break;
        case EXIT:          I = m[m[1]--]; break;
        case ECHO:          putchar(tos); tos = *S--; break;
        case KEY:           *++S = tos; tos = getchar(); break;
        case _PICK:         tos = S[-tos]; break;
    }
}


int main(int argc, char** argv) {
    a(3);
    a(4);
    a(1);
    w = *m;
    m[m[0]++] = _READ;
    m[m[0]++] = RUN_ME;
    I = *m;
    m[m[0]++] = w;
    m[m[0]++] = I - 1;
    for (w = 6; w < 16;)
        a(1), m[m[0]++] = w++;
    m[1] = *m;
    for (*m += 512;; execute(m[I++]))
        ;
}
