#include <bits/stdc++.h>
using namespace std;

int main(){
	
	//开始编写程序
	string s1,s2;//s1 s2代表2个要运算的数
	//数组定义时不赋值,值是未知数,如果定义的时候赋值,但赋值元素个数不够,默认补充0
	//用这个特性初始化数组都为0 
	int a[250] = {0},b[250] = {0},r[250] = {0}; 
	int len,i,j;
	getline(cin,s1); 
	getline(cin,s2);
	//得到较长的字符串的长度,按照这个长度运算,短的要在前面补0(相当于倒过来后面补0) 
	len = s1.length() > s2.length()?s1.length():s2.length();
	 
	//倒过来将字符串存入数组再运算,注意字符要转化为实际的整数
	for(i = 0;i < s1.length();i++){
		a[i] = s1[s1.length() - i - 1] - 48;
	} 
	
	for(i = 0;i < s2.length();i++){
		b[i] = s2[s2.length() - i - 1] - 48;
	} 
	
	//a b数组按照较长的长度,逐位运算
	for(i = 0;i < len;i++){
		r[i] = a[i] + b[i];
	} 
	
	//r数组逐位进位 
	for(i = 0;i < len;i++){
		r[i + 1] = r[i + 1] + r[i] / 10; 
		r[i] = r[i] % 10;
	} 
	
	//倒过来从第一个非0开始输出r数组
	//r数组的长度最多是len + 1
	if(r[len] != 0) len++;
	for(i = len - 1;i >= 0;i--) {
		cout<<r[i];
	}
}
/**************************************************************
	Problem: 1268
	User: admin
	Language: C++
	Result: Accepted
	Time:17 ms
	Memory:2076 kb
****************************************************************/