#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
vector<int> Sum(string& str1, string& str2)
{
reverse(str1.begin(), str1.end());
reverse(str2.begin(), str2.end()); //反转,倒序存入数组,易处理进位问题
int data1[10000] = { 0 }, data2[10000] = { 0 };
for (int i = 0; i < str1.length(); i++)
data1[i] = str1[i] - '0';
for (int i = 0; i < str2.length(); i++)
data2[i] = str2[i] - '0';
int sum[10000]; int flag = 0; //进位标志
int lng = max(str1.length(), str2.length());
vector<int> Vsum;
for (int i = 0; i < lng + 1; i++) //lng+1是考虑到最后一位相加可能会大于10产生进位,结果会多一位
{
int tmp = data1[i] + data2[i] + flag;
if (tmp < 10)
{
sum[i] = tmp;
flag = 0;
}
else //大于10产生进位,flag置1,加予下一位
{
sum[i] = tmp % 10;
flag = 1;
}
Vsum.push_back(sum[i]);
}
return Vsum;
}
int main()
{
string str1, str2;
getline(cin, str1); getline(cin, str2);
vector<int> Vanser = Sum(str1, str2);
auto itr = Vanser.end() - 1;
if (*itr == 0) //最后一位相加没有进位时,去掉最后这个0
Vanser.pop_back();
//if(Vanser[Vanser.size()-1]==0)
// Vanser.pop_back();
reverse(Vanser.begin(), Vanser.end()); //反转再输出
for (auto itr = Vanser.begin(); itr != Vanser.end(); ++itr)
cout << *itr;
return 0;
}