#include<bits/stdc++.h>
using namespace std;
//a ,b都是正数 
string f1(string a,string b){
	string r="";
	int k=0;
	//考虑a与b相同
	if(a==b) return "0";
	//两数相减,将较大的数放上面 
	if(a.size()<b.size())
	{
		swap(a,b);
		k = 1;
	}else if(a.size()==b.size() && a<b){
		swap(a,b);
		k = 1; 
	}
	//给较小的数补充前置0   123 - 1 => 123 - 001 
	while(b.size()!=a.size()) b = '0' + b;
	int i,f=0,x,y,n=a.size();
	//从后往前逐位相减 
	for(i=n-1;i>=0;i--)
	{
		x = a[i]-'0';
		y = b[i]-'0';
		if(x-f>=y)
		{	
			r = char(x-f-y+'0') + r;
			f = 0; //借位 
		}else{
			r = char(x-f-y+10+'0') + r;
			f = 1;
		}
	}
	//删除前置0
	while(r[0]=='0') r.erase(0,1);
	if(k==1) r = '-'+r; 
	return r;
}
//实现两数相加 
string f2(string a,string b){
	string r="";
	if(a.size()<b.size()) swap(a,b);	
	while(b.size()!=a.size()) b = '0' + b;
	int i,x,y,n=a.size(),f=0;
	for(i=n-1;i>=0;i--)
	{
		x = a[i]-'0';
		y = b[i]-'0';
		r  = char((x+y+f)%10+'0')  + r;
		//是否会有新的进位  f=1进位  f=0无进位  
		f = (x+y+f)/10;
	}
	if(f==1) r = '1' + r; 
	return r;
}

int main(){
	string a,b,t,at,bt;
	cin>>a>>b;
	if(a[0]!='-' && b[0]!='-'){  //正 正 
		cout<<f1(a,b);
	}else if(a[0]=='-' && b[0]!='-'){ //负 正
		t = "";
		for(int i=1;i<a.size();i++)  t = t + a[i];
		cout<<"-"<<f2(t,b);
	}else if(a[0]!='-' && b[0]=='-'){ //正 负 
		t = "";
		for(int i=1;i<b.size();i++)  t = t + b[i];
		cout<<f2(a,t);
	}else{ //负 负 
		//at 接收a字符串对应的正数
		//bt 接收b字符串对应的正数
		at = "";
		bt = ""; 
		for(int i=1;i<a.size();i++)  at = at + a[i];
		for(int i=1;i<b.size();i++)  bt = bt + b[i];
		cout<<f1(bt,at);
	}
	return 0;
}

/**************************************************************
	Problem: 1946
	User: admin
	Language: C++
	Result: Accepted
	Time:27 ms
	Memory:2084 kb
****************************************************************/