#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;
}