#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0;i<(n);++i)

signed main(void){
    
    //本質部分となるコマンド
    string command="お理工ダメなんだお理工ダメなんだ ダメなんだお理工お理工ダメなんだ だけじゃお理工 ダメなんだお理工お理工ダメなんだ だけじゃお理工 ダメなんだお理工お理工ダメなんだ だけじゃお理工 ダメなんだお理工お理工だけじゃ ダメなんだお理工だけじゃダメなんだ ダメなんだお理工だけじゃダメなんだ ダメなんだお理工だけじゃダメなんだ お理工お理工だけじゃ ダメなんだお理工だけじゃだけじゃ ダメなんだお理工だけじゃだけじゃ お理工お理工ダメなんだ ダメなんだお理工お理工だけじゃ ダメなんだお理工お理工だけじゃ ダメなんだお理工だけじゃダメなんだ お理工だけじゃお理工 ダメなんだお理工お理工ダメなんだ ダメなんだお理工お理工ダメなんだ ダメなんだだけじゃ お理工ダメなんだお理工だけじゃ ダメなんだダメなんだ だけじゃお理工お理工 だけじゃだけじゃだけじゃ ダメなんだダメなんだダメなんだ";
    //ここ以下はめんどくさいから読まなくていいよ
  
  
    //コマンドを分解
    vector<string> commands;
    int command_size = command.size();
    string command_string = "";
    for(int i=0;i<=command_size;i++){
        if(command[i]==' ' || i==command_size){
            commands.push_back(command_string);
            command_string.clear();
        }else{
            command_string.push_back(command[i]);
        }
    }
    
    //色々を定義
    vector<int> A(100000,0);
    vector<char> B(100000,0);
    vector<bool> C(100000,false);
    
    int Apointer1=0;
    int Apointer2=0;
    int Bpointer=0;
    int Cpointer=0;
    
    int loopstart=0;
    int looptimes=0;
    
    //処理
    for(int k=0;k<commands.size();k++){
        string com = commands[k];
        
        //アクセス
        if(com=="お理工"){
            A[Apointer1];
        }
        
        if(com=="お理工お理工"){
            A[Apointer2];
        }
        
        if(com=="だけじゃ"){
            B[Bpointer];
        }
        
        if(com=="ダメなんだ"){
            C[Cpointer];
        }
        
        //参照ずらし
        if(com=="ダメなんだお理工お理工だけじゃ"){
            if(Apointer1>0){
                Apointer1--;
            }
        }
        
        if(com=="ダメなんだお理工お理工ダメなんだ"){
            if(A.size()<Apointer1+2){
                A.resize(Apointer1+2);
            }
            Apointer1++;
        }
        
        if(com=="ダメなんだお理工だけじゃだけじゃ"){
            if(Apointer2>0){
                Apointer2--;
            }
        }
        
        if(com=="ダメなんだお理工だけじゃダメなんだ"){
            if(A.size()<Apointer2+2){
                A.resize(Apointer2+2);
            }
            Apointer2++;
        }
        
        if(com=="ダメなんだだけじゃお理工"){
            if(Bpointer>0){
                Bpointer--;
            }
        }
        
        if(com=="ダメなんだだけじゃだけじゃ"){
            if(B.size()<Bpointer+2){
                B.resize(Bpointer+2);
            }
            Bpointer++;
        }
        
        if(com=="ダメなんだダメなんだお理工"){
            if(Cpointer>0){
                Cpointer--;
            }
        }
        
        if(com=="ダメなんだダメなんだだけじゃ"){
            if(C.size()<Cpointer+2){
                C.resize(Cpointer+2);
            }
            Cpointer++;
        }
        
        //標準入出力
        if(com=="だけじゃお理工"){
            int in;
            cin >> in;
            A[Apointer1]=in;
        }
        
        if(com=="だけじゃだけじゃ"){
            char in;
            cin >> in;
            B[Bpointer]=in;
        }
        
        if(com=="だけじゃダメなんだ"){
            string in;
            int inpointer=Bpointer;
            cin >> in;
            int insize=in.size();
            for(int i=0;i<insize;i++){
                if(B.size()<inpointer+2){
                    B.resize(inpointer+2);
                }
                B[inpointer]=in[i];
                inpointer++;
            }
            A[0]=insize;
        }
        
        if(com=="だけじゃお理工お理工"){
            cout << A[Apointer1];
        }
        
        if(com=="だけじゃお理工だけじゃ"){
            cout << B[Bpointer];
        }
        
        if(com=="だけじゃだけじゃお理工"){
            cout << " ";
        }
        
        if(com=="だけじゃだけじゃだけじゃ"){
            cout << endl;
        }
        
        //演算
        if(com=="お理工お理工お理工"){
            A[Apointer1]=A[Apointer2];
        }
        
        if(com=="お理工お理工だけじゃ"){
            A[Apointer1]+=A[Apointer2];
        }
        
        if(com=="お理工お理工ダメなんだ"){
            A[Apointer1]-=A[Apointer2];
        }
        
        if(com=="お理工だけじゃお理工"){
            A[Apointer1]*=A[Apointer2];
        }
        
        if(com=="お理工だけじゃだけじゃ"){
            A[Apointer1]/=A[Apointer2];
        }
        
        if(com=="お理工だけじゃダメなんだ"){
            A[Apointer1]%=A[Apointer2];
        }
        
        if(com=="お理工ダメなんだお理工だけじゃ"){
            A[Apointer1]++;
        }
        
        if(com=="お理工ダメなんだお理工ダメなんだ"){
            A[Apointer1]--;
        }
        
        if(com=="お理工ダメなんだだけじゃだけじゃ"){
            A[Apointer2]++;
        }
        
        if(com=="お理工ダメなんだだけじゃダメなんだ"){
            A[Apointer2]--;
        }
        
        if(com=="お理工ダメなんだダメなんだだけじゃ"){
            B[Bpointer]++;
        }
        
        if(com=="お理工ダメなんだダメなんだダメなんだ"){
            B[Bpointer]--;
        }
        
        if(com=="お理工ダメなんだダメなんだお理工"){
            C[Cpointer]=C[Cpointer]^1;
        }
        
        //ループ
        if(com=="ダメなんだだけじゃ"){
            loopstart=k;
            if(A[0]<=0){
                for(int i=k;i<commands.size();i++){
                    k++;
                    if(commands[k]=="ダメなんだダメなんだ"){
                        break;
                    }
                }
            }
        }
        
        if(com=="ダメなんだダメなんだ"){
            looptimes++;
            if(looptimes<A[0]){
                k=loopstart;
            }
        }
        
        if(com=="ダメなんだお理工"){
            looptimes;
        }
        
        //その他
        if(com=="ダメなんだダメなんだダメなんだ"){
            return 0;
        }
        
        
    }


  return 0;
}


Measured memory_bytes: 768