#include "iostream"
#include "string"
#include "cstring"
using namespace std;
#define maxlen 2001
int a[maxlen];
int b[maxlen];
int len1, len2, i, j;
int bigger(int a, int b)
{
return a>b?a:b;
}
void Add(int underzero)
{
if(underzero)
cout<<'-';
int big = bigger(len1, len2);
for(i=0; i<=big; i++)
{
a[i] += b[i];
if(a[i]>=10)
{
a[i]-=10;
a[i+1]++;
}
}
bool flag = false;
for(i=big; i>=0; i--)
{
if(flag)
cout<<a[i];
else if(a[i])
{
cout<<a[i];
flag = true;
}
}
cout<<endl;
}
void Minus(int aa[], int bb[], int biglen, int underzero)
{
if(underzero)
cout<<'-';
for(i=0; i<=biglen; i++)
{
if(aa[i]>=bb[i])
aa[i] -= bb[i];
else
{
aa[i] = aa[i]+10-bb[i];
aa[i+1]--;
}
}
bool flag = false;
for(i=biglen; i>=0; i--)
{
if(flag)
cout<<aa[i];
else if(aa[i])
{
cout<<aa[i];
flag = true;
}
}
cout<<endl;
}
int main()
{
string s1, s2;
bool success;
while(cin>>s1>>s2)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
len1 = s1.length();
len2 = s2.length();
for(i=len1-1, j=0; i>0; i--)
a[j++] = s1[i]-'0';
if(s1[0]!='-')
a[j] = s1[0]-'0';
for(i=len2-1, j=0; i>0; i--)
b[j++] = s2[i]-'0';
if(s2[0]!='-')
b[j] = s2[0]-'0';
if(s1[0]=='-' && s2[0]=='-')
Add(1); //和为负
else if(s1[0]!='-' && s2[0]!='-')
Add(0); //和为正
else if(s1[0]=='-')
{
if(len1-1 > len2) //负数大
Minus(a, b, len1-1, 1);
else if(len1-1 < len2) //正数大
Minus(b, a, len2, 0);
else
{
success = true;
for(i=len1-2, j=len2-1; j>=0; j--, i--) //这里的len-2是个关键,len-1是长度,之所以再减去1,是要减去负号的位置
{
if(a[i]>b[j]) //负数大
{
success = false;
Minus(a, b, len2, 1);
break;
}
else if(a[i]<b[j]) //正数大
{
success = false;
Minus(b, a, len2, 0);
break;
}
}
if(success) //相等
cout<<"0"<<endl;
}
}
else if(s2[0]=='-')
{
if(len2-1 > len1) //负数大
Minus(b, a, len2-1, 1);
else if(len2-1 < len1) //正数大
Minus(a, b, len1, 0);
else
{
success = true;
for(i=len2-2, j=len1-1; j>=0; j--, i--) //这里的len-2是个关键,len-1是长度,之所以再减去1,是要减去负号的位置
{
if(a[j]>b[i]) //正数大
{
success = false;
Minus(a, b, len1, 0);
break;
}
else if(a[j]<b[i]) //负数大
{
success = false;
Minus(b, a, len1, 1);
break;
}
}
if(success) //相等
cout<<"0"<<endl;
}
}
}
return 0;
}