#include<iostream>
#include<vector>
#include<string>
using namespace std;
void sw(string& a)
{
int len = a.size();
for (int i = 0; i < len / 2; i++)
{
char tmp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = tmp;
}
return;
}
string sub(string a,string b)
{
string s1;
int flag = 1;
string s = "";
if (a.size() < b.size() || a.compare(b) < 0)
{
s1 = a;
a = b;
b = s1;
flag = 0;
}
sw(a);
sw(b);
int i = 0;
int index = 0;
while (i < a.size() && i < b.size())
{
int u = (a[i] - '0') - (b[i] - '0') - index;
if (u < 0)
{
u = u + 10;
index = 1;
}
else
index = 0;
s += u + '0';
i++;
}
while (i<a.size())
{
int u = (a[i] - '0')- index;
if (u < 0)
{
u = u + 10;
index = 1;
}
else
index = 0;
s += u + '0';
i++;
}
sw(s);
string res = "-";
res += s;
return res;
}
string add(string a, string b)
{
int i = 0;
string res = "";
int index = 0;
sw(a);
sw(b);
while (i < a.size() && i < b.size())
{
int c = a[i] - '0' + b[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
while (i < a.size())
{
int c = a[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
while (i < b.size())
{
int c = b[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
if (index != 0)
{
res += index + '0';
}
sw(res);
return res;
}
int main()
{
string s1;
string s2;
while (cin >>s1)
{
cin >> s2;
int flag1 = 0;
int flag2 = 0;
if (s1[0] == '-')
{
flag1 = 1;
s1 = s1.substr(1);
}
if (s2[0] == '-')
{
flag2 = 1;
s2 = s2.substr(1);
}
if (flag1 == 0 && flag2 == 0)
{
cout << add(s1, s2) << endl;
}
else if (flag1 == 1 && flag2 == 1)
{
cout << "-" << add(s1, s2) << endl;
}
else if (flag1 == 1 && flag2 == 0)
cout << sub(s2, s1) << endl;
else if (flag1 == 0 && flag2 == 1)
cout << sub(s1, s2) << endl;
}
}
#include<vector>
#include<string>
using namespace std;
void sw(string& a)
{
int len = a.size();
for (int i = 0; i < len / 2; i++)
{
char tmp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = tmp;
}
return;
}
string sub(string a,string b)
{
string s1;
int flag = 1;
string s = "";
if (a.size() < b.size() || a.compare(b) < 0)
{
s1 = a;
a = b;
b = s1;
flag = 0;
}
sw(a);
sw(b);
int i = 0;
int index = 0;
while (i < a.size() && i < b.size())
{
int u = (a[i] - '0') - (b[i] - '0') - index;
if (u < 0)
{
u = u + 10;
index = 1;
}
else
index = 0;
s += u + '0';
i++;
}
while (i<a.size())
{
int u = (a[i] - '0')- index;
if (u < 0)
{
u = u + 10;
index = 1;
}
else
index = 0;
s += u + '0';
i++;
}
sw(s);
string res = "-";
res += s;
return res;
}
string add(string a, string b)
{
int i = 0;
string res = "";
int index = 0;
sw(a);
sw(b);
while (i < a.size() && i < b.size())
{
int c = a[i] - '0' + b[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
while (i < a.size())
{
int c = a[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
while (i < b.size())
{
int c = b[i] - '0' + index;
index = c / 10;
res += (c % 10) + '0';
i++;
}
if (index != 0)
{
res += index + '0';
}
sw(res);
return res;
}
int main()
{
string s1;
string s2;
while (cin >>s1)
{
cin >> s2;
int flag1 = 0;
int flag2 = 0;
if (s1[0] == '-')
{
flag1 = 1;
s1 = s1.substr(1);
}
if (s2[0] == '-')
{
flag2 = 1;
s2 = s2.substr(1);
}
if (flag1 == 0 && flag2 == 0)
{
cout << add(s1, s2) << endl;
}
else if (flag1 == 1 && flag2 == 1)
{
cout << "-" << add(s1, s2) << endl;
}
else if (flag1 == 1 && flag2 == 0)
cout << sub(s2, s1) << endl;
else if (flag1 == 0 && flag2 == 1)
cout << sub(s1, s2) << endl;
}
}