int cmp(string a,string b){
if(a==b)return 0;
if(a[0]=='-'&&b[0]=='-'){
if(a.size()>b.size())return -1;
else if(a.size()<b.size())return 1;
else{
if(a>b)return -1;
else return 1;
}
}
else if(a[0]=='-')return -1;
else if(b[0]=='-')return 1;
else{
if(a.size()>b.size())return 1;
else if(a.size()<b.size())return -1;
else{
if(a>b)return 1;
else return -1;
}
}
}
string subtract(string a,string b){
if(cmp(a,b)==0)return "0";
else if(cmp(a,b)<0)return "-"+subtract(b,a);
int x=0;
string ans="";
int lena=a.size(),lenb=b.size();
for(int i=lena-1,j=lenb-1;i>=0;i--,j--){
if(j>=0)
x+=b[j]-'0';
if(a[i]-'0'<x%10){
ans=(char)(a[i]-'0'+10-x%10+'0')+ans;
x/=10;
x++;
}
else{
ans=(char)(a[i]-'0'-x%10+'0')+ans;
x/=10;
}
}
string tans="";
for(int i=0;i<ans.size();++i)
if(ans[i]!='0')
for(;i<ans.size();++i)
tans+=ans[i];
return tans;
}
string add(string a,string b){
string ans="";
if(a[0]=='-'&&b[0]=='-'){
int lena=a.size(),lenb=b.size();
int x=0;
int i,j;
for(i=lena-1,j=lenb-1;i>=1&&j>=1;i--,j--){
x+=a[i]-'0'+b[j]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
if(i>1)
for(;i>=1;i--){
x+=a[i]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
if(j>1)
for(;j>=1;j--){
x+=b[j]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
while(x){
ans=(char)(x%10+'0')+ans;
x/=10;
}
return "-"+ans;
}
else if(a[0]!='-'&&b[0]!='-'){
int lena=a.size(),lenb=b.size();
int x=0;
int i,j;
for(i=lena-1,j=lenb-1;i>=0&&j>=0;i--,j--){
x+=a[i]-'0'+b[j]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
if(i>0)
for(;i>=0;i--){
x+=a[i]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
if(j>0)
for(;j>=0;j--){
x+=b[j]-'0';
ans=(char)(x%10+'0')+ans;
x/=10;
}
while(x){
ans=(char)(x%10+'0')+ans;
x/=10;
}
return ans;
}
else{
if(a[0]=='-'){
string tmp=a;
a=b;
b=tmp;
}
string tb="";
for(int i=1;i<b.size();++i)
tb+=b[i];
return subtract(a,tb);
}
}