#include <iostream>
#include <algorithm>
#include <math.h>
#include <cmath>
#include <string>
#include <cstring>
#include <list>
#include <map>
#include <queue>
#include <iterator>
#include <stack>
#include <cstdio>
#include <type_traits>
#include <functional>
#include <tuple>
#include <random>
#include <cstdint>
#include <unistd.h>
#include <vector>
#include <sstream>
#include <stdexcept>
#include <memory>
#include <numeric>
#include <list>
#include <map>
#include <queue>
#include <iterator>
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <locale>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <shared_mutex>
#include <bit>
#include <version>
#include<assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
using namespace std;
#define int long long
#define ull unsigned int
#define N 1048576
int memory[N],pos;
string code[N]={
"write 0 72", "output char 0",
"write 0 101", "output char 0",
"write 0 108", "output char 0",
"write 0 108", "output char 0",
"write 0 111", "output char 0",
"write 0 32", "output char 0",
"write 0 119", "output char 0",
"write 0 111", "output char 0",
"write 0 114", "output char 0",
"write 0 108", "output char 0",
"write 0 100", "output char 0",
"exit"
};
string readStr(int x,int y) // 从 code[x][y] 开始读取一个字符串, 读到空格为止
{
pos=y;
string ret="";
int len=code[x].length();
while(pos<len && code[x][pos]' ')
{
pos;
}
while(pos<len && code[x][pos]!=' ')
{
ret=ret+code[x][pos];
}
return ret;
}
int readInt(int x,int y) // 从 code[x][y] 开始读取一个整数, 读到非数字为止
{
pos=y;
int ret=0, len=code[x].length();
bool f=0;
while(pos<len && !isdigit(code[x][pos]))
{
if(code[x][pos]'-')
{
f=1;
}
pos;
}
while(pos<len && isdigit(code[x][pos]))
{
ret=(ret<<3)+(ret<<1)+(code[x][pos]^48);
}
return f?-ret:ret;
}
signed main()
{
for(int i=0;;i=(i+1)%N)
{
string op=readStr(i,0);
if(op=="input")
{
int x=readInt(i,pos);
cin>>memory[x];
}
else if(op=="output")
{
string mode=readStr(i,pos);
if(mode=="int")
{
int x=readInt(i,pos);
cout<<memory[x];
}
else if(mode=="char")
{
int x=readInt(i,pos);
cout<<char(memory[x]%128);
}
else
{
cout<<"\n\nError: Invalid Code\n\n";
break;
}
}
else if(op=="write")
{
int x=readInt(i,pos), y=readInt(i,pos);
memory[x]=y;
}
else if(op=="copy")
{
int x=readInt(i,pos), y=readInt(i,pos);
memory[y]=memory[x];
}
else if(op=="calc") // and or not xor add sub mul div mod
{
string mode=readStr(i,pos);
int x=readInt(i,pos), y=readInt(i,pos), z=(mode=="not" ? 0 : readInt(i,pos));
x=memory[x], y=memory[y];
if(mode=="and")
{
memory[z]=x&y;
}
else if(mode=="or")
{
memory[z]=x|y;
}
else if(mode=="not")
{
memory[y]=~x;
}
else if(mode=="xor")
{
memory[z]=x^y;
}
else if(mode=="add")
{
memory[z]=x+y;
}
else if(mode=="sub")
{
memory[z]=x-y;
}
else if(mode=="mul")
{
memory[z]=x*y;
}
else if(mode=="div")
{
if(y0)
{
cout<<"\n\nError: Division by Zero\n\n";
break;
}
memory[z]=x/y;
}
else if(mode"mod")
{
memory[z]=x%y;
}
else
{
cout<<"\n\nError: Invalid Code\n\n";
break;
}
}
else if(op=="goto")
{
int x=readInt(i,pos);
i=x-1;
}
else if(op=="if") // < > == <= >= !=
{
string mode=readStr(i,pos);
int x=readInt(i,pos), y=readInt(i,pos), z=readInt(i,pos);
x=memory[x], y=memory[y];
if(mode=="<")
{
if(x<y)
{
i=z-1;
}
}
else if(mode==">")
{
if(x>y)
{
i=z-1;
}
}
else if(mode=="")
{
if(xy)
{
i=z-1;
}
}
else if(mode=="<=")
{
if(x<=y)
{
i=z-1;
}
}
else if(mode==">=")
{
if(x>=y)
{
i=z-1;
}
}
else if(mode=="!=")
{
if(x!=y)
{
i=z-1;
}
}
else
{
cout<<"\n\nError: Invalid Code\n\n";
break;
}
}
else if(op=="")
{
int x=readInt(i,pos);
memory[x];
}
else if(op=="--")
{
int x=readInt(i,pos);
memory[x]--;
}
else if(op=="exit")
{
break;
}
else
{
cout<<"\n\nError: Invalid Code\n\n";
break;
}
}
return 0;
}