#define SIZE 100001
using namespace std;
void read(string& a,int x[]){
	reverse(a.begin(),a.end());
	for(int i=0;i<a.size();i++)x[i]=a[i]-'0';
	return;
}

string write(int x[]){
	string a="";
	int mx=SIZE-2;
	while(!x[mx])mx--;
	for(int i=0;i<=mx;i++)a+=x[i]+'0'; 
	reverse(a.begin(),a.end());
	return a;
}

void JIA(int c[],int w[]){
	for(int i=0;i<SIZE;i++){
		c[i]+=w[i];
		if(c[i]>9)c[i]-=10,c[i+1]++;
	}
	return;
}

void JIAN(int c[],int w[]){
	for(int i=0;i<SIZE;i++){
		c[i]-=w[i];
		if(c[i]<0)c[i]+=10,c[i+1]--;
	}
	return;
}

void CHENG(int c[],int w[]){
	int nw[]={};
	for(int i=0;i<SIZE;i++){
		for(int j=0;j<SIZE;j++){
			nw[i+j]+=c[i]*w[j];
		}
	}
	for(int i=0;i<SIZE;i++){
		while(nw[i]>=10)nw[i]-=10,nw[i+1]++;
	}
	for(int i=0;i<SIZE;i++)c[i]=nw[i];
	return;
}

bool bigger(int c[],int w[]){
	int lc,lw;
	lc=lw=SIZE;
	while(!c[lc])lc--;
	lc++;
	while(!w[lw])lw--;
	lw++;
	if(lc!=lw){
		return lc>lw;
	}
	for(int i=lw;i>=0;i--){
		if(c[i]!=w[i])return c[i]>w[i];
	}
	return 0;
}

bool same(int c[],int w[]){
	int lc,lw;
	lc=lw=SIZE;
	while(!c[lc])lc--;
	lc++;
	while(!w[lw])lw--;
	lw++;
	if(lc!=lw){
		return 0;
	}
	for(int i=lw;i>=0;i--){
		if(c[i]!=w[i])return 0;
	}
	return 1;
}

void CHU(int c[],int w[]){
	int lc,lw;
	lc=lw=SIZE;
	while(!c[lc])lc--;
	lc++;
	while(!w[lw])lw--;
	lw++;
	int ans[]={};
	for(int i=lc-lw;i>=0;i--){
		int lit[]={};
		for(int j=i;j<i+lw;j++)lit[j]=c[j];
		while(bigger(c,lit)||same(c,lit)){
			ans[i]++;
			JIAN(c,lit);
		}
	}
	for(int i=0;i<SIZE;i++)c[i]=ans[i];
}

int main(){
	string a="",b="";
	int x[SIZE]={},y[SIZE]={};
	cin>>a>>b;
	int t[SIZE]={};
	read(a,x);
	read(b,y);
	read(a,t);JIA(t,y);
	cout<<write(t)<<endl;
	return 0;
}