#include <cmath>
#include <vector>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
bool cmp(string &s, string &t){
if(s.size()!=t.size())return s.size()>t.size();
for(int i=0;i<s.size();i++){
if(s[i]!=t[i])
return s[i]>t[i];
}
return true;
}
vector<int> sub(string &s, string &t){
vector<int>c;
vector<int>a,b;
for(int i=s.size()-1;i>=0;i--)a.push_back(s[i]-'0');
for(int i=t.size()-1;i>=0;i--)b.push_back(t[i]-'0');
for(int i=0,t=0;i<a.size();i++){
t=a[i]-t;
if(i<b.size())t-=b[i];
c.push_back((t+10)%10);
if(t<0)t=1;
else t=0;
}
while(c.size()>1&&c.back()==0)c.pop_back();
return c;
}
vector<int> add(string &s, string &t){
vector<int>a,b;
for(int i=s.size()-1;i>=0;i--)a.push_back(s[i]-'0');
for(int i=t.size()-1;i>=0;i--)b.push_back(t[i]-'0');
vector<int>c;
int k=0;
for(int i=0;i<a.size()||i<b.size();i++){
if(i<a.size())k+=a[i];
if(i<b.size())k+=b[i];
c.push_back(k%10);
k/=10;
}
if(k)c.push_back(1);
return c;
}
int main() {
string s, t;
cin>>s>>t;
if(s.size()<=10001||t.size()<=10001){
if(s[0]!='-'&&t[0]!='-'){
auto res=add(s,t);
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}else if(s[0]=='-'&&t[0]=='-'){
s=s.substr(1),t=t.substr(1);
auto res=add(s,t);
cout<<'-';
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}else if(s[0]=='-'&&t[0]!='-'){
s=s.substr(1);
if(cmp(s,t)){
cout<<'-';
auto res=sub(s,t);
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}else{
auto res=sub(t,s);
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}
}else if(s[0]!='-'&&t[0]=='-'){
t=t.substr(1);
if(cmp(s,t)){
auto res=sub(s,t);
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}else{
cout<<'-';
auto res=sub(t,s);
for(int i=res.size()-1;i>=0;i--)
cout<<res[i];
cout<<endl;
}
}else if(s[0]=='0'&&t[0]=='0'){
cout<<'0'<<endl;
}
}
return 0;
}