#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[100086];
char b[100086];
int count1 = 0;
int count2 = 0;
cin.getline(a, 100086);
while(a[count1]!= '\0')
{
count1++;
}
cin.getline(b, 100086);
while(b[count2]!= '\0')
{
count2++;
}
int small = min(count1, count2);
int large = max(count1, count2);
int carry = 0;
char result[100086] = {0};
int index = 0;
for(int i = small - 1; i >= 0; i--)
{
int digitsum = (a[i] - '0') + (b[i] - '0') + carry;
carry = digitsum / 10;
result[index++] = (digitsum % 10) + '0';
}
for(int i = large - small - 1; i >= 0; i--)
{
if (large == count1)
{
int digitsum = (a[small + i] - '0') + carry;
carry = digitsum / 10;
result[index++] = (digitsum % 10) + '0';
}
else
{
int digitsum = (b[small + i] - '0') + carry;
carry = digitsum / 10;
result[index++] = (digitsum % 10) + '0';
}
}
if (carry)
{
result[index++] = carry + '0';
}
reverse(result, result + index);
cout << result << endl;
return 0;
}