int joy(int a, int b)
{
	int i;
	for (i=2;i*i<=a;i++)
	{
		if (a%i==0)
		{
//			printf("i=%d\n",i);
			return 0;
		}
	}
	for (i=2;i*i<=b;i++)
	{
		if (b%i==0)
		{
//			printf("i=%d\n",i);
			return 0;
		}
	}
	return 1;
}

int main()
{
	int n,i,k;
	int x,y;
	scanf("%d",&n);

	for (k=6;k<=n;k=k+2)
	{

	for (i=2;i<=k/2;i++)
	{
		x=i;
		y=k-x;
		if (joy(x,y)==1)
		{
				printf("%d=%d+%d\n",k,x,y);
				break;
		}
	}
	}

	return 0;

}


int issushu(int a)
{
	int i,sqrta;
	if(a%2==0)
	{
		return 0;
	}
	sqrta=(int)sqrt(a);
	for(i=3;i<=sqrta;i++)
	{
		if(a%i==0)
		{
			return 0;
		}
	}
	return 1;
}
int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	for(j=3;j<=n;j++)
	{
		if(j%2==0)
		{

			for(i=2;i<=(j/2);i++)
			{
				if(issushu(i)&&issushu(j-i))
				{
					printf("%d=%d+%d\n",j,i,j-i);
					break;
				}
			}
		}
	}

	return 0;
}


int sushu(int p)
{
	int i;
	int k=0;
	for (i=2;i<=sqrt(p);i++)
		if (p%i==0)
			k++;
	if (k>0)
		return 0;
	else
		return 1;
}
int main()
{
	int n,m;
	scanf ("%d",&m);
	int a,b,p,q;
	n=6;
	while (n<=m)
	{
		for (a=2;a<=n/2;a++)
		{
			b=n-a;
			if (a!=2)
				p=a%2;
			else
				p=1;
			q=b%2;
			if (p&&q)
			{
				if (sushu(a)&&sushu(b))
				{
					printf ("%d=%d+%d\n",n,a,b);
					break;
				}
			}
		}
		n=n+2;
	}
	return 0;
}


int prime (int x)
{
	int i,j;
	if (x==3||x==5||x==7)
	{
		return 1;
	}
	else
	{
		for (i=3;i<=sqrt(x);i+=2)
		{
			if (x%i==0)
			{
				return 0;
				break;
			}
		}
		return 1;
	}
}
int main(int argc, char* argv[])
{
	int n,i,j;
	scanf("%d",&n);
	for (i=6;i<=n;i=i+2)
	{
		for (j=3;j<=i/2;j+=2)
		{
			if (prime(j)+prime(i-j)==2)
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
		}
	}
	return 0;
}


int isprime(int a)
{
	int i,k;
	if(a%2==0){
		return 0;
	}
    k=(int)sqrt(a);
	for(i=3;i<=k;i=i+2){
		if(a%i==0){
			return 0;
		}
	}

	return 1;
}

int main()
{
	int n,i,j;
    scanf("%d",&n);
	for(i=6;i<=n;i=i+2){
		for(j=2;j<=i/2;j++){
			if(isprime(j)&&isprime(i-j)){
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
		}
	}

	return 0;
}


int sushu(int p)
{
	int i;
	for(i=2;i<=(int)sqrt(p);i++)
		if(p%i==0) return 0;
	return 1;

}

int main(int argc, char* argv[])
{
	int n,i,k;
	scanf("%d",&n);

	for(i=6;i<=n;i+=2)
	{
		for(k=2;k<=i/2;k++)
		{
			if(sushu(k)==1&&sushu(i-k)==1)
			{

				printf("%d=%d+%d\n",i,k,i-k);
                break;
			}
		}
	}

			return 0;
}


int sushu(int a)
{
	if(a>2&&a%2==0)return 0;
	else{
			if(a==2)return 1;
			else
				{
					for(int i=3;i<sqrt(a)+1;i=i+2)
						if(a%i==0)return 0;

				}
	}
	return 1;

}
int main()
{
	int a,b,c,d,i,t,m;
	scanf("%d",&c);
	for(m=6;m<=c;m=m+2)
		{d=0;
		for(i=3;i<=m/2;i=i+2)
			{t=m-i;
				if(sushu(i)!=0&&sushu(t)!=0)
				{
				printf("%d=%d+%d\n",m,i,t);
				break;

				}

			}
		}

}


//
//  main.cpp
//  ????
//
//  Created by ? ? on 12-11-21.
//  Copyright (c) 2012? ? ?. All rights reserved.
//

int n;
int prime (int j)
{int i,k;
    k=sqrt(j);
    for (i=2;i<=k;i++)
    {if (j%i==0) {break;}}
    if (i>k) {return 1;
    }
    else return 0;
}

int main(int argc, const char * argv[])
{int i,j;
    cin>>n;
    for(i=6;i<=n;i+=2)
    {
        for (j=3; j<=i/2; j++) {
            if(prime(j)&&prime(i-j))
            {
                cout<<i<<"="<<j<<"+"<<i-j<<endl;break;
            }

        }
    }
    return 0;
}


int prime(int x)
{   int b=1;
    if(x==3||x==5||x==7)
    {return b;}
    else
    {
        for(int i=3;i<=sqrt(x);i+=2)
        {
            if(x%i==0)
            {
                  b=0;
                  return b;
                  break;
            }
        }
    }
    return b;
}
int main()
{
    int o;
    int n,a;
    scanf("%d",&n);
    for(int i=6;i<=n;i+=2)
    {       int s=i/2;
            for(a=3;a<(n/2);a+=2)
            {

                            if(prime(a)+prime(i-a)==2)
                            {
                                         printf("%d=%d+%d\n",i,a,i-a);break;

                            }

            }
    }

     scanf("%d",&o);
    return 0;
}


int prove(int x)
{
int y=1,i;
if(x%2==0) y=0;
else
for(i=3;i<=sqrt(x);i++)
	{if(x%i==0) y=0;
	}
return(y);
}
int main()
{
unsigned int n,l,x,y;
scanf("%d",&n);
unsigned int i,k,p;
for(i=6;i<=n;i=i+2)
	{p=0;
	for(k=3;k<=i/2;k=k+2)
		{
		if(p==1)
			continue;
		else
			l=i-k;
		int prove(int x);
		x=prove(k);
		y=prove(l);
		if(x==1&&y==1)
			{p=1;
			printf("%d=%d+%d\n",i,k,l);}
		else
			p=0;
		}
	}
return(0);
}


long n;
long zhishu(int a)
{
	for(int i=2;i<=sqrt(a);i++)
	{
		if(a%i==0)
        return 0;
	}
return 1;
}
main()
{
 scanf("%d",&n);
 int i,j;
 for(i=6;i<=n;i=i+2)
    for(j=3;j<=(i/2);j=j+2)
      {
      if(zhishu(j)&&zhishu(i-j))
	  {
	  printf("%d=%d+%d\n",i,j,i-j);
	  break;
	  }
	}
return 0;
}


int isprime(int a)
{
	int i;
	for(i=3;i<=(int)sqrt(a);i=i+2)
		if(a%i==0)return 0;

		return (a==2)||(a%2!=0);
}

void main()
{int n,i,j;
 scanf("%d",&n);
 for(i=6;i<=n;i=i+2)
	for(j=2;j<=i/2;j++)
	{
		 if(isprime(j)&&isprime(i-j))
		 {
			 printf("%d=%d+%d\n",i,j,i-j);
			 break;

		 }
	}

}


int f(int x)
{
	int i;
	for(i=2;i<=sqrt(x);i++)
		if(x%i==0)break;
		if(i>sqrt(x))return 1;
		return 0;
}
int main()
{
	int n,i,j;
	scanf("%ld",&n);

	for(i=6;i<=n;i+=2)
	{
		for(j=3;j<=i/2;j+=2)
		{
			if(f(j)&&f(i-j))
			{
				printf("%ld=%ld+%ld\n",i,j,i-j);

				break;
			}
		}

	}
	return 0;
}


int sushu(int a)
{
	int yes=1,i;
	for(i=2;i<=sqrt(a);i++)
	{
		if(a%i==0)
		{
		yes=0;
		break;
		}
	}
	return yes;
}

int main()
{
	int n,i,j;
	scanf("%d",&n);
	for(j=6;j<=n;j++)
	{
		if(j%2==0)
		{
			for(i=2;i<=j;i++)
			{
				if(sushu(i)&&sushu(j-i)==1)
				{
			        printf("%d=%d+%d\n",j,i,j-i);
					break;
				}
			}
		}
	}

	return 0;
}


main ()
{
int j,m,n,p,q,flagp,flagq ;
scanf("%d",&m) ;
for(n=6;n<=m;n=n+2)
{
p = 1 ;
do {
p = p + 1 ;
q = n - p ;
flagp = 1 ;
for(j=2;j<=(int)(floor(sqrt((double)(p))));j++)
{
if ((p%j)==0)
{
flagp = 0 ;
break ;
}
}
flagq= 1 ;
for (j=2;j<=(int)(floor(sqrt((double)(q))));j++)
{
if ((q%j)==0)
{
flagq = 0 ;
break ;
}
}
} while (flagp*flagq==0);
printf("%d=%d+%d\n",n,p,q) ;
}
}


int judge(int m)
{
	int i;
	if(m >= 4)
	{
     	for(i = 2; i <= sqrt(m); i++)
		{
	     	if(m % i == 0)
			{
	        	return 0;
		    	break;
			}
		}
    	if(i > sqrt(m))
		{
    		return 1;
		}
	}
	if(m == 3)
	{
		return 1;
	}
}
int main()
{
	int i, j, n;
	cin >> n;
	for(i = 6; i <= n; i = i + 2)
	{
		for(j = 3; j <= i / 2; j++)
		{
			if(judge(j) == 1 && judge(i - j) == 1)
			{
				cout << i << "=" << j << "+" << i - j << endl;
				break;
			}
		}
	}
	return 0;
}


int num_f (int x);
int main ()
{
	int num, a, b, t;
	scanf ("%d", &num);
	for (t=6; t<=num; )
	{
		for (a=3; a<=t/2; )
			{
				b = t - a;
				if (num_f(a)==1&&num_f(b)==1)
				{
					printf ("%d=%d+%d\n", t, a, b);
					t+=2;
					break;
				}
				else a+=2;
			}

	}
	return 0;
}

int num_f (int x)
{
	int i;
	for (i=2; i*i<=x; i++)
		if (x%i==0) break;
		if (i*i>x) return 1;
		else return 0;
}


void main()
{
 int check(int n);
 int n,i,j;
 scanf("%d",&n);
 n=n/2*2;
 for(i=6;i<=n;i++,i++)
 {
  for(j=2;j<=(i/2);j++)
  {
   if(check(j)==1&&check(i-j)==1)
   {
    printf("%d=%d+%d\n",i,j,i-j);
    break;
   }
  }
 }
}

int check(int n)
{
 int k,i;
 k=sqrt(n);
 for(i=2;i<=k;i++)
  {
  	if(n%i==0)
  	{
  	 return(-1);
  	 break;
  	}
  }
 if(i==(k+1))
 return(1);
}


int main()
{
	int prime(int a);
	int i,n,a;
	scanf("%d",&i);
	n=6;
	while(n<=i)
	{
	a=3;
	while(a<=n/2)
	{
		if(prime(a)==0&&prime(n-a)==0)
		{
		printf("%d=%d+%d\n",n,a,n-a);
	    break;
		}
	    else
		a+=2;
	}
	n+=2;
	}
    return 0;
}
int prime(int a)
	{
		int b,c;
		b=0;
		for(c=2;c<=sqrt(a);c++)
		{
			if (a%c==0)
			{
				b=1;break;
			}
		}
		return(b);
	}


int isodd(int num)
{
    int i,flag=1;
    if (num%2==0)
    flag=0;
    else
    {
        if (num==3||num==5||num==7)
        flag=1;
        else
        {
          for (i=3;i<=sqrt(num);i=i+2)
          {
            if (num%i==0)
            {
            flag=0;
            break;
            }
          }
        }
    }
    return flag;
}
int main()
{
    int n,i,temp1,temp2;
    scanf("%d",&n);
    for (i=6;i<=n;i=i+2)
    {
        for(temp1=3;temp1<=n/2;temp1=temp1+2)
        {
            if(isodd(temp1))
            {
                temp2=i-temp1;
                if (isodd(temp2))
                {
                    printf("%d=%d+%d\n",i,temp1,temp2);
                    break;
                }
            }
        }
    }
    return 0;
}


int sushu(int a)
{
	int i;
	int j=0;
	for(i=2;i<=sqrt(a);i++)
	{
		if(a==2)
		{
			break;
		}
		else
		{
			if(a%i==0)
			{
				j=1;
				return(1);
				break;
			}
		}
	}
	if(j==0)
		return(0);
}

int main()
{
	int n;
	scanf("%d",&n);
	int a;
	int x;
	int y;
	for(a=6;a<=n;a++)
	{
		if(a%2==0)
		{
			for(x=3;x<=a/2;x++)
			{
				y=a-x;
				if(sushu(x)==0&&sushu(y)==0)
				{
					printf("%d=%d+%d\n",a,x,y);
					break;
				}
			}
		}
	}
	return 0;
}


int isprime(int n);
void Goldbach(int m);
int main()
{
int m;
scanf("%d",&m);
Goldbach(m);
return 0;
}

int isprime(int n)
{
	int i,j;
	if(n==2)
	{
		return 1;
	}
	else if(n==1)
	{
		return 0;
	}
	else
	{
		for(i=2,j=0;i<=(int)sqrt(n);i++)
		{
			if(n%i==0)
			{
				break;
			}
			else
			{
				j++;
			}
		}
		if(j!=(int)sqrt(n)-1)
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}
}

void Goldbach(int m)
{
	int i,j;
	for(i=6;i<=m;i++)
	{
		if(i%2==0)
		{
			for(j=3;j<=i;j++)
			{
				if((isprime(j)==1)&&(isprime(i-j)==1))
				{
					printf("%d=%d+%d\n",i,j,i-j);
					break;
				}
			}
		}
	}
}


int p(int m);
int main()
{
	int n,i=5;
	cin>>n;
for(i=6;i<=n;i=i+2)
{
		int a=0,b=0;
		for(a=2;a<=i-2;a++)
		{
				if(p(i-a)&&p(a))
				{	cout<<i<<"="<<a<<"+"<<i-a<<endl;
			     break;
				}

		}

	}
	return 0;
}

int p(int m)
	{
		for(int j=2;j<=sqrt((float)m);j++)
		{
			if(m%j==0)
				return 0;
		}
		return 1;
	}


int judge(int n)
{int i;
	for (i=2;i<sqrt(n)+1;i++)
	{
		if (n%i==0)
			break;
	}
	if (i>(sqrt(n)+1))
		return 1;
	else
		return 0;
}

main ()
{
	int i,n,m,j,k,l;
	scanf ("%d",&n);
	m=n/2;
	for (i=3;i<=m;i++)
	{
		for (j=3;j<=m;j++)
		{
			l=i*2-j;
			k=2*i;
			if ((judge(j)==1)&&(judge(l)==1))
			{printf ("%d=%d+%d\n",k,j,l);
			break;}
		}
	}

}


int pd(int);
main()
{
   int m,count,i;
   scanf("%d",&m);
   for(count=6;count<=m;count=count+2){
      i=2;
      if(i==2&&pd(count-2)){
          printf("%d=2+%d\n",count,count-2);
          break;
      }
      else
         for(i=3;i<=count/2+1;i=i+2){
            if(pd(i)&&pd(count-i)){
               printf("%d=%d+%d\n",count,i,count-i);
               break;
            }
         }
   }
   return 0;
}

int pd(int x)
{
   int i;
   for(i=2;i<=sqrt(x)+1;i++){
      if(x%i==0)
         return 0;
   }
   return 1;
}


int main()
{
	int i=0,num=0,n=0,t1=0,t2=0,shu=0;
	cin>>n;
	for(shu=6;shu<=n;shu=shu+2)
	{
		for(num=3;num<=shu/2;num=num+2)
		{
			t1=0;
			for(i=2;i<=sqrt(num);i++)
			{
				if(num%i==0)
				{
					t1=1;
					break;
				}
				else
					continue;
			}
			if(t1==1)
				continue;
			else
			{
				t2=0;
				for(i=2;i<=sqrt(shu-num);i++)
				{
					if((shu-num)%i==0)
					{
						t2=1;
						break;
					}
					else
						continue;
				}
			}
			if(t2==1)
				continue;
			else
				cout<<shu<<"="<<num<<"+"<<shu-num<<endl;
			break;
		}
	}
	return 0;
}


int main()
{
  int f(int n);
  int n,i,j;
  scanf("%d",&n);
  for(i=6;i<=n;i+=2)
  {
    for(j=3;j<i;j++)
	{
	  if(f(j)==1&&f(i-j)==1)
	  {
	  printf("%d=%d+%d\n",i,j,i-j);
	  break;
	  }
	}
  }
return 0;
}
int f(int n)
{
  int i,a=sqrt(n),c;
  for(i=2;i<=a;i++)

    if(n%i==0) break;
	if(i>a) c=1;
    else c=0;
  return(c);
}


int isprime (int a)
{
	int i;
	if(a==2)
		return 1;
	if((a!=2)&&(a%2==0))
		return 0;

	for(i=3;i<(int)sqrt(a)+1;i=i+2)
	{
		if(a%i==0)
			return 0;
	}

	return 1;
}

int main()
{
	int n,i;
    int k;

    scanf("%d",&n);
    for(k=6;k<=n;k=k+2)
	{
		for(i=3;i<k;i++)
		{
			if((isprime(i)==1)&&(isprime(k-i)==1))
			{
				printf("%d=%d+%d\n",k,i,k-i);
				break;
			}
		}
	}

return 0;
}


int f(int n)
{
	int i,k;
	k=(int)sqrt(n);
	for(i=2;i<=k;i++)
	{
		if(n%i==0)break;
	}
	if(i>k)return 1;
	else return 0;
}
int main()
{
	int n,i,j;
	scanf("%d",&n);
    for(i=6;i<=n;i+=2)
	{
		for(j=3;j<i;j+=2)
		{
			if(f(j)&&f(i-j))
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
		}
	}
	return 0;
}


int prime (int p);
int main ()
{
	int n,k,i;
	scanf("%d",&n);
	for (i=6;i<=n;i+=2){
		for (k=3;k<=(n/2);k+=2){
			if(prime(k)+prime(i-k)==2){
				printf("%d=%d+%d\n",i,k,i-k);
				break ;
			}
		}
	}
	return 0;
}
int prime (int p){
	int i;
	int isprime=1;
	if (p==3||p==5||p==7){
		return isprime;
	}
	else{
		for(i=3;i<=sqrt(p);i+=2)
		{
			if(p%i==0){
				isprime=0;
				return isprime;
				break;
			}
		}
	}
	return isprime;
}


int a,b;
int sushu(int a)
{
	int j;
	for(j=3;j<(int)sqrt(a)+2;j=j+2)
		if(a%2==0 || a%j==0)return 0;
	return 1;
}
int fenjie(int i)
{
	for(a=2;a<i;a++)
		if(sushu(a)&&sushu(i-a))
			return a;
}

int main(int argc, char* argv[])
{
	int n;
	int i;
	scanf("%d",&n);
	for(i=6;i<=n;i++)
	{
		if(i%2==0)
		{
			a=fenjie(i);
			b=i-a;
			printf("%d=%d+%d\n",i,a,b);
		}
	}

	return 0;
}


int prime (int x)
{
	int i,p=1;
	for (i=2;i<=sqrt(x);i++)
	{
		if (x%i==0)
		{
			p=0;break;
		}
	}
	return p;
}
int main ()
{
	int n;
	scanf ("%d",&n);
	int i=6;
	while (i<=n)
	{
		int j=3;
		while (j<=i/2)
		{
			if (prime(j))
			if (prime(i-j))
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
			j++;
		}
		i+=2;
	}
	return 0;
}


void main()
{
	unsigned int n,k=6,i=3,j=3,a,b,x,y;
	scanf("%d",&n);
	x=sqrt(i);
	y=sqrt(j);
	while(k<=n)
	{for(a=3;a<=sqrt(i);a+=2)
	if(i%a==0)break;
	j=k-i;
	for(b=3;b<=sqrt(j);b+=2)
	if(j%b==0)break;
	if(a>sqrt(i)&&b>sqrt(j)){printf("%d=%d+%d\n",k,i,j);k+=2;i=3;}
	else {i+=2;}
	}

}


int f(int k);
void main()
{
	int x,i,n;
	scanf("%d",&n);
	for(i=6;i<=n;i=i+2)
	{
		for(x=3;x<i/2;x=x+2)
		{
			if(f(x)==0) continue;
			else if(f(i-x)==0) continue;
			else break;
		}
			printf("%d=%d+%d\n",i,x,i-x);
	}
}

int f(int k)
{
	int t;
	for(t=3;t<=sqrt(k);t++)
	{
		if(k%t==0)
		break;
	}
	if(t<=sqrt(k)) return 0;
	else return 1;

}


int sushu(int x)
{
	int i,r=1;
	if(x%2==0)r=0;
	for(i=3;i<=sqrt(x);i=i+2)
	{
        if(x%i==0)r=0;
	}
		return r;
}
int main(int argc, char* argv[])
{
	int n,fig,elm1,elm2;
	scanf("%d",&n);
    for(fig=6;fig<=n;fig=fig+2)
	{
		for(elm1=2;elm1<fig;elm1++)
		{
			elm2=fig-elm1;
			if(sushu(elm1)==1&&sushu(elm2)==1)
			{
                printf("%d=%d+%d\n",fig,elm1,elm2);
				break;
			}
		}
	}
	return 0;
}


void main()
{
	int prime(int x);
	int n,i,j;
	scanf("%d",&n);
	for (i=6;i<=n;i+=2)
	{
		for (j=3;j<=i/2;j++)
			if ((prime(j)==1)&&(prime(i-j)==1))
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
	}
}

int prime(int x)
{
	int t=1,i;
	if (x%2==0)
		t=0;
	i=3;
	while (i*i<x+1)
	{
		if (x%i==0)
		{
			t=0;
			break;
		}
		i+=2;
	}
	return t;
}


void main()
{
	long n,i;
		scanf("%d",&n);
	for(i=6;i<=n;i=i+2)
	{long m=i;
	int l=3,a=1;
		do
		{int r,k;
		k=sqrt(l);
		for(r=3;r<=k;r=r+2)
			if(l%r==0)break;
			if(r>=k+1)
			{
			int s;
			s=m-l;
			int t=sqrt(s);
			int j;
			for(j=3;j<=t;j=j+2)
			if(s%j==0)break;
			if(j>=t+1)
			{
			printf("%d=%d+%d\n",m,l,s);
			a=0;}
			else l=l+2;
			}
			else l=l+2;
		}
		while(a!=0);
	}
}


int n,i,j,k,x,a[1001];

int main()
{
	int sushu(int n);
	void jiafa(int x);
	scanf("%d",&n);
	for(j=6;j<=n;j+=2)
	{
		jiafa(j);
	}
	return 0;
}

int sushu(int n)
{
	if(n%2==1)
	{
		for(k=3;k<=sqrt(n);k+=2)
			if(n%k==0)
				return 0;;
			return 1;
	}
	else
		return 0;
}

void jiafa(int n)
{
	for(i=3;i<=n/2;i+=2)
	{
		if(sushu(i))
		{
			if(sushu(n-i))
			{
				printf("%d=%d+%d\n",n,i,n-i);
				break;
			}
		}
	}
}


int main(int argc, char* argv[])
{
	long int zhi(long int n);
	long int n,k=6,i;
	scanf("%ld",&n);
	while (k<=n)
	{
		for(i=2;i<k;i++)
		{
			if (zhi(i))
				if (zhi(k-i))
				{
				printf("%ld=%ld+%ld\n",k,i,k-i);
			break;
				}
		}
		k=k+2;
	}
	return 0;
}
long int zhi(long int n)
{
	long int i;
	if (n%2==0)
		return 0;
	for (i=3;i<=sqrt(n);i++)
	{
		if (n%i==0)
		{
			return 0;
		break;
		}
	}
	return 1;
}


int ss(int n)            /*??n????????????1?????0*/
	{
	int i;
	for (i=2; i<=(int)sqrt(n); i++)
		if (n%i==0)
			return 0;
			return 1;
	}

int main()
{
	int i,j,iLine,m;
	scanf("%d",&m);
	for (i=6; i<=m; i+=2)
		for (j=3; j<i; j++)
		{
			if (ss(j)&&ss(i-j))
			{
				printf("%d=%d+%d\n",i,j,i-j);
				iLine++;
			if (iLine%5==0) putchar('\r');
				break;
			}
		}
 return 0;
}


// change it according to the range required
const int Size = 50001;

int main()
{
  short IsP[Size];
  long N, I, J;
  cin >> N;
  for (I = 1; I <= N; I ++) IsP[I] = 1;
  IsP[2] = 1;
  for (I = 2; I <= N; I ++)
  if (IsP[I])
  {
    J = 2 * I;
    while (J <= N)
    {
      IsP[J] = 0;
      J += I;
    }
  }
  for (I = 6; I <= N; I += 2)
    for (J = 3; J <= I - 3; J ++)
      if (IsP[J] && IsP[I - J])
      {
	cout << I << "=" << J << "+"  << (I - J) << endl;
	break;
      }
  return 0;
}


int pd(int n)
{  int k,i,j;
   k=sqrt(n);
   if(n==1)return 0;
   else if(n==2)return 1;
   else
   for(i=2;i<=k;i++)
	   if(n%i==0)break;
	   if(i>k)return 1;
	   else return 0;
}
void main()
{
	int n,j,i;
	scanf("%d",&n);
	for(i=6;i<=n;i+=2)
		for(j=2;j<i;j++)
			if(pd(j)==1&&pd(i-j)==1)
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
}


int sushu(int x)
{
	int z,t,k;
	k=(int)sqrt(x);
	for(t=2;t<=k;t++)
		if(x%t==0) break;
		if(t>k) z=1;
			else z=0;
			return z;
}
void main()
{
	int n,i,j;
	scanf("%d",&n);
	for(i=6;i<=n;i=i+2)
	{
		for(j=3;j<=i;j=j+2)
			if(sushu(j)&&sushu(i-j))
			{
			printf("%d=%d+%d\n",i,j,i-j);
			break;
			}
	}
}


int pri(int a)
{
   int i;
   if(a%2==0) return 0;
   for(i=3;i<=sqrt(a);i+=2){
   if(a%i==0) return 0;
   }
   return 1;
}
int main()
{
   int n;
   scanf("%d",&n);
   int i,j;
   for(i=6;i<=n;i+=2){
       if(pri(i-2)==1) {printf("%d=2+%d\n",i,i-2);continue;}
       for(j=3;j<=i/2;j+=2){
       if(pri(j)==1&&pri(i-j)==1) {printf("%d=%d+%d\n",i,j,i-j);break;}
       }
       }

   }


int check(int n){
	int i;
	for(i=3;i*i<=n;i=i+2){
		if(n%i==0)break;
	}
	if(i*i>n)return 1;
	else return 0;
}

int main(){
	int n,i,j;
	scanf("%d",&n);
	for(i=6;i<=n;i=i+2){
		for(j=3;j<=i/2;j=j+2){
			if(check(j)!=0&&check(i-j)!=0){
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
		}
	}
	return 0;
}


void main()
{
	int n,i,j,k,x,y;
	scanf("%d",&n);
	for(i=6;i<=n;i+=2)
	{
		for(x=3;x<=n/2;x++)
		{
			for(j=2;j<=sqrt(x);j++)
				if(x%j==0)
					break;
			if(j<=sqrt(x))
				continue;
			y=i-x;
			for(j=2;j<=sqrt(y);j++)
				if(y%j==0)
					break;
			if(j>sqrt(y))
			{
				printf("%d=%d+%d\n",i,x,y);
				break;
			}
		}
	}
}


int prime(int n)
{
 int i;
 for (i=2;i<=(int)sqrt(n); i++)
 {   if (n%i==0)
	   return 0;
 }
 return 1;
}
int main(int argc, char* argv[])
{
 int i,j;
 int n;
 scanf("%d",&n);
 for (i=6;i<=n;i+=2)
    for (j=3;j<i;j++)
	{
     if (prime(j)&&prime(i-j))
	 {
        printf("%d=%d+%d\n",i,j,i-j);
      break;
     }
    }
 return 0;
}


int F(long int m)
{
	long int i;
	if(m%2==0)
		return 0;
	for(i=3;i<=sqrt(m);i+=2)
	{
		if(m%i==0)
			return 0;
	}
	return 1;
}
void main()
{
	long int i,j,n;
	scanf("%ld",&n);
	for(i=6;i<=n;i+=2)
	{
		for(j=3;j<=(i/2);j+=2)

			if(F(j)==1&&F(i-j)==1)
		{
				printf("%ld=%ld+%ld\n",i,j,i-j);
			break;
		}
	}
}


int main(int argc, char* argv[])
{
	int prime(int p);
	int n,i,k;
	scanf("%d",&n);
	for(i=6;i<=n;i++,i++)
	{
       for(k=3;k<n/2;k++,k++)
	   {
		   if(prime(k)+prime(i-k)==2)
		   {
			   printf("%d=%d+%d\n",i,k,i-k);
			   break;
		   }
	   }
	}
	return 0;
}

int prime(int p)
{
	int isprime=1;
	int j;
	if(p==3||p==5||p==7)
	{
		return isprime;
	}
	else
	{
		for(j=3;j<=sqrt(p);j++,j++)
		{
			if(p%j==0)
			{
				isprime=0;
				return isprime;
				break;
			}
		}
	}
	return isprime;
}


int work(int n);
int main()
{
    unsigned int num,n;
    unsigned int a,b;
    scanf("%ud",&num);
    for(n=6;n<=num;n+=2)
       {
         printf("%ld=",n);
         for(a=2;a<n;a++)
            {
              if(work(a))
              {
                b=n-a;
                if(work(b))
                  {
                    printf("%ld+%ld",a,b);
                    break;
                    }
                }
              }
            printf("\n");
         }

    return 1;
}

int work(int n)
{
    int i,sqr;
    sqr=(int)sqrt(n);
    //if(n==2) return 1;
    for(i=2;i<=sqr+1;i++)
       {
        if(n%i==0)return 0;
        }
    return 1;
}


int main(int argc,char*argv[])
{
   int n,r,i,j,x,y,flag=0;
   scanf("%d",&n);
	   for(i=6;i<=n;i=i+2)
	   {
		   flag=0;
		   for(j=2;j<=i/2;j++)
		   {
			   int tag=0;
			   for(r=2;r<=sqrt(j);r++)
			   {
				   if(j%r==0)
				   {
					   tag=1;
					   break;
				   }
			   }
			   if(tag==1)
				   continue;
				for(r=2;r<=sqrt(i-j);r++)
				{
				    if((i-j)%r==0)
					{
						 tag=1;
						break;
					}
				}
				if(tag==1)
				   continue;
                x=j;
				y=i-j;
				printf("%d=%d+%d\n",i,x,y);
				flag=1;
				break;

		   }if(flag==1)continue;
	   }
		   return 0;
}


int m(int x)
  {int i,c=0;
   for (i=2;i<=sqrt(x);i++)
  {
   if (x%i==0) c=c+1;
  }
  if (c==0) return (x);
  else return (0);
  }
void f(int y)
{ int i,a,b;
  int m(int x);
  void p (int x,int y);
  for (i=2;i<=y;i++)
   {
	a=m(i); b=m(y-i);
   if (a+b==y)
   {
    p (i,y-i);
    break;
   }
  }
}
void p (int x,int y)
{
 printf ("%d=%d+%d\n",x+y,x,y);
}
main()
{int a=0,n=0,i=0;
void f(int y);
scanf("%d",&n);
for (i=6;i<=n;i++)
  {
   if (i%2==0) f(i);
  }
}


int sushu( int x )
{
	int j;
	if( x == 2 )
		return 1;
	for(j = 2; j <= sqrt( x ); j ++)
	    if(x % j == 0)
			return 0 ;
	return 1;

}
void main()
{
    int i, n, m;
	scanf("%d", &n );
	for(m = 6; m <= n; m += 2)
	{
        for(i = 2; i <= m / 2; i ++)
		    if((sushu( i ) == 1) && (sushu( m - i ) == 1))
			{
			    printf("%d=%d+%d\n", m, i, m - i);
			    break;
			}
	}

}


int prime[50002];

int main()
{
	int N;
	cin>>N;
	for(int i = 2; i <= N; i++)
		prime[i] = 1;
	for(int i = 2; i <= N / 2; i++)
		prime[i * 2] = 0;
	int p = 2;
	while(p * p <= N)
	{
		p = p + 1;
		while(prime[p] == 0)
			p++;
		int t = p * p;
		int s = 2 * p;
		while(t <= N)
		{
			prime[t] = 0;
			t = t + s;
		}
	}
	for(int i=6;i<=N;i+=2)
	{
		for(int j=3;j<=N-j;j+=2)
		{
			if(prime[j]==1&&prime[i-j]==1)
			{
				cout<<i<<"="<<j<<"+"<<i-j<<endl;
				break;
			}
		}
	}
}


int main()
{
    int i,y,k,x;
	int c(int n);
	scanf("%d",&x);
	for (k=6;k<=x;k+=2)
	for (i=2;i<k;i++)
	{
		if (c(i)) y=k-i;
		if (c(y)) printf("%d=%d+%d\n",k,i,y);else continue;
		break;
	}

	return 0;
}
int c(int n)
{
	int m;
	for (m=2;m<=sqrt(n);m++) if (n%m==0) {n=0;break;}
    return (n!=0?1:0);
}


int main()
{
	int m,n,i,j,a,b;
	scanf("%d",&m);
	for(n=6;n<=m;n+=2)
	{
		for(a=3;a<=n/2;a+=2)
	    {
		for(i=3;i<=sqrt((float)a);i+=2)
			if(a%i==0)break;
		if(i<=sqrt((float)a))continue;
		else
			for(j=3,b=n-a;j<=sqrt((float)b);j+=2)
				if(b%j==0)break;
		if(j<=sqrt((float)b))continue;
		else break;
	    }
	    printf("%d=%d+%d\n",n,a,b);
	}
}


int is_sushu(int k)
{
	int i;
	double u;
	if(k==2||k==3||k==5||k==7) return 1;
	for (i=3;i<=sqrt(k);i=i+2)
	{
		u=k%i;
		if(u==0) return 0;
	}
	if (u!=0) return 1;

}

int main(int argc, char* argv[])
{
    int n,h,k;
    scanf("%d",&n);
	for(h=6;h<=n;h=h+2)
	{
       for(k=3;k<=n/2;k=k+2)
	   {
              if(is_sushu(k)+is_sushu(h-k)==2)
			  {
				  printf("%d=%d+%d\n",h,k,h-k);
				  break;
			  }
	   }

	}

	return 0;
}


int prime(int m)
{
  int i,k;
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k) return(1);
else return(0);
}

void main()
{

int n,x,e,f;
scanf("%d",&n);
for(x=6;x<=n;x=x+2)
{
e=2;
while(e<=x/2)
{
f=x-e;
if(prime(e)==1&&prime(f)==1)
{
printf("%d=%d+%d\n",x,e,f);
break;
}
else e++;
}
}

}


int main(int argc, char* argv[])
{
	int m = 6, n, even = 6, odd;
	int su(int x);
	scanf("%d", &n);
    while(m <= n)
	{
		odd = 3;
		while(odd < m)
		{
			if(su(odd) == 1)
			{
				if(su(m - odd) == 1)
				{
					printf("%d=%d+%d\n", m, odd, m - odd);
					break;
				}
				else
					odd += 2;
			}
			else
				odd += 2;
		}
	    m += 2;
	}
    return 0;
}

int su(int x)
{
	int i;
	for(i=3;i<=sqrt(x)+1;i+=2)
	{
		if(x%i == 0)
		{
			return 0;
		}

	}
    return 1;
}


void main()
{
	int prime(int x);
	int n,i,j,k;
	scanf("%d",&n);
	for(i=6;i<=n;i++)
	{
		if(i%2==0)
		{
			for(j=2;j<=i/2;j++)
			{
				k=i-j;
				if(prime(j)==1&&prime(k)==1)
				{
					printf("%d=%d+%d\n",i,j,k);
					break;
				}
			}
		}
	}
}
int prime(int x)
{
	int i,k;
	if(x==2) return 1;
	k=sqrt(x);
	for(i=2;i<=k;i++)
	{
		if(x%i==0) break;
	}
	if(i>k) return 1;
	else return 0;
}


void main()
{
	int x,y,i,j,k,l,n,m;
	scanf("%d",&n);
	m=6;
	while(m<=n)
	{
	x=3;
judx:k=sqrt(x);
	i=3;
	while(i<=k)
	{
	    if(x%i!=0)
	    i=i+2;
		else
		{
judy:x=x+2;
			goto judx;
		}
	}
     y=m-x;
	 l=sqrt(y);
	 j=3;
	 while(j<=l)
	 {
		 if(y%j!=0)
			 j=j+2;
		 else goto judy;
	 }
	 printf("%d=%d+%d\n",m,x,y);
	 m=m+2;
	}
}


//??????

int ispo(int m)
{
	int i;
	for(i=3;i<=sqrt(m);i++)
		if (m%i==0)
			return 0;
		return 1;
}

int stevie()
{int i,j,a,b;
int n;
cin>>n;
for(i=6;i<=n;i+=2)
{
	for(j=3;j<=(i/2);j+=2)
		if((ispo(j))&&(ispo(i-j)))
		{
			cout<<i<<"="<<j<<"+"<<i-j<<endl;
			break;
		}
}

return 1;
}

int main()
{int a;
/*clock_t start=clock();

for(int i=1;i<100;++i)*/
a=stevie();
//cout<<"time "<<(clock()-start)/CLK_TCK<<endl;
return 0;
 }


int pd(long k)
{
	int a,j;
		for (j=2;j<=(sqrt(k));j++)
		    if (k%j==0)
				break;
		if(j>(sqrt(k))) a=1;
		else a=0;
	return(a);
}
void fj(long n)
{
	long i,m;
	for (i=3;i<n;i=i+2)
	{
	    m=n-i;
		if (pd(i)>0 && pd(m)>0)
		{
			printf("%ld=%ld+%ld\n",n,i,m);
		    break;
		}
	}
}
void main()
{
	long h,b;
	scanf("%ld",&h);
	for(b=6;b<=h;b=b+2)
		fj(b);
}


int sushu(int n)
	{
		int i,m;
		m=sqrt(n)+1;
		for(i=2;i<m;i++)
		{
           if(n%i==0)
			   break;
		}
		if(i==m)
			return(1);
		else
			return(0);
	}
void main()
{
	int n;
	scanf("%d",&n);
	int i,k;
	for(i=6;i<=n;i=i+2)
	{
       for(k=3;k<=n;k++)
	   {
		   if(sushu(k)==1&&sushu(i-k)==1)
		   {printf("%d=%d+%d\n",i,k,i-k);
		   break;}
	   }
	}
}


int main()
{
	int sushu[20000]={0},n,i,j,k,count=0,biaoji[50000]={0};
	sushu[0]=2;
	sushu[1]=3;
	k=2;
	biaoji[2]=biaoji[3]=biaoji[5]=1;
	scanf("%d",&n);
	for (i=5;i<n;i=i+2)
	{
		count=0;
		for(j=0;j<k;j++)
		{
			if(i%sushu[j]==0)
			{
				count=1;
				break;
			}
		}
		if (count==0)
		{
			sushu[k]=i;
			biaoji[i]=1;
			k++;
		}
	}

	for (i=6;i<=n;i=i+2)
	{
		count=0;
		for (j=0;sushu[j]<=i/2;j++)
		{
			if (biaoji[i-sushu[j]]==1)
			{
				printf("%d=%d+%d\n",i,sushu[j],i-sushu[j]);
				count=1;
				break;
			}
		}

	}

	return 0;
}


int prime[50001];
int isPrime(int a)
{
        for(int i=2;i*i<=a;i++)
                if(a%i==0)
                {
                        return 0;
                }
        return 1;
}
int main()
{
        int n;

        cin>>n;
        prime[2]=1;
        for(int i=6;i<=n;i+=2)
        {
                if(isPrime(i-2))
                        {
                                cout<<i<<"="<<2<<"+"<<(i-2)<<endl;
                                continue;
                        }

                for(int j=3;j*2<=i;j+=2)
                {
                        if(isPrime(j)&&isPrime(i-j))
                        {
                                cout<<i<<"="<<j<<"+"<<(i-j)<<endl;
                                break;
                        }
                }
        }
        return 0;
}


void main()
{ int n,k=6,p,q,i,j;
  scanf("%d",&n);
loop:while(k<=n)
  {for(p=3;p<=k/2;p=p+2)
  { for(i=3;i<=(int)sqrt(p);i=i+2)
      if(p%i==0) break;
      if(i>(int)sqrt(p))
	  {q=k-p;
       for(j=3;j<=(int)sqrt(q);j=j+2)
       if(q%j==0) break;
       if(j>(int)sqrt(q))
	   { printf("%d=%d+%d\n",k,p,q); k=k+2;goto loop;}}}

  k=k+2;}
}


int main ()
{
	int n,j,m;
	int sushu(int a);
	scanf ("%d", &n);
	for (j=6;j<=n;j+=2)
	{
		for (m=3;m<=(n/2);m+=2)
		{
			if (sushu(m)+sushu(j-m)==2)
			{
				printf ("%d=%d+%d\n", j,m,j-m);
				break;
			}
		}
	}
	return 0;
}

int sushu (int a)
{
	int i;
	for (i=3;i<=sqrt(a);i+=2)
	{
		if (a%i==0)
		{
			return 0;
			break;
		}
	}
	return 1;
}


int sushu(int n)
{
	int s,i;
	if(n==2) return 1;
	if(n==3) return 1;
	s=0;
	if(n%2==0) s=1;
	for(i=3;i<=sqrt(n);i=i+2)
	{
		if((sushu(i)==1)&&(n%i==0))
		{
			s=1;
			break;
		}
	}
	if(s==0) return 1;
	else return 0;
}
int main()
{
	int n,i,j;
	scanf("%d",&n);
	for(j=6;j<=n;j=j+2)
	{
		for(i=3;i<=j/2;i=i+2)
		{
			if((sushu(i)==1)&&(sushu(j-i)==1))
			{
				printf("%d=%d+%d\n",j,i,j-i);
				break;
			}
		}
	}
	return 0;
}


int Set(int a)
{
	int i,w=1;
	if (a%2==0)
	{w=0;goto loop;}
	for (i=3;i<sqrt(a)+1;i=i+2)
	{
		if (a%i==0)
		{
			w=0;
		}

	}
loop:return (w);
}
int main ()
{
	long int i=6,n,j,f;
	scanf("%d",&n);
	while (i<n+1)
	{
		for (j=3;j<i;j=j+2)
		{
			if(Set(j)==1)
			{
			    f=Set(i-j);
			    if (f==1)
			    {
				printf("%d=%d+%d\n",i,j,i-j);
				break ;
			    }
			}
		}
		i=i+2;
	}
	return 0;
}


void main()
{
	int zhishu(int i);
	long n;
	long num;
	int i;
	scanf("%d",&n);
	for(num=6;num<=n;num=num+2)
	{
	printf("%d=",num);
	if(zhishu(num-2)==1) printf("%d+%d\n",2,num-2);
	else if(sqrt(num)>=3)
	{
		for(i=3;i<=num/2;i=i+2)
		{
			if(zhishu(i)==1&&zhishu(num-i)==1)
			{
				printf("%d+%d\n",i,num-i);
				break;
			}
		}
	}
	else if(sqrt(num)<3)
	{
		for(i=3;i<=num/2;i=i+2)
		{
			if(zhishu(i)==1&&zhishu(num-i)==1)
			{
				printf("%d+%d\n",i,num-i);
				break;
			}
		}
	}
	}
}
int zhishu(int i)
{
	int j;
	if(i==2) return 1;
	else if(i%2==0&&i!=2) return 0;
	else for(j=3;j<i/2;j=j+2)
	{
		if(i%j==0)
		{
			return 0;
			break;
		}
	}
	if(j=i/2+1) return 1;
}


void main()
{
 int n,i,m,j,y,k;
 scanf("%d",&n);
 for(i=6;i<=n;i=i+2)
 {
  for(m=3;m<=i/2;m=m+2)
   {
    for(j=3;j<=sqrt(m);j+=2)
     if(m%j==0)break;
    if(j<=sqrt(m))continue;
    y=i-m;
    for(j=3;j<=sqrt(y);j+=2)
      if(y%j==0)break;
    if(j>sqrt(y))
   {
    printf("%d=%d+%d\n",i,m,y);
    break;
    }
   else
      continue;
   }

  }
}


int judge_zhi(int a)
{
	int i;
	if(a!=2&&a%2==1)
	{
	for(i=2;i<=sqrt(a)+1;i++)
	{
		if(a%i==0)
		{
			return(0);
		     break;
		}
	}
	if(i>=sqrt(a)+1) return(1);
	}
	if(a==2) return(1);
	if(a>2&&a%2==0) return(0);
}

void main()
{
	int n,i,j,m;
	scanf("%d",&m);
	for(n=6;n<=m;n++)
	{
	     if(n%2==1) continue;
		for(i=2;i<n;i++)
		{
		if(judge_zhi(i)==1&&judge_zhi(n-i)==1)
		{
			printf("%d=%d+%d\n",n,i,n-i);
	         break;
		}

		}
	}
}


int panduan(int n)
{
    int f=1;
    int i;
    for(i=2;i<=sqrt(n);i++)
    if(n%i==0)
    {
        f=0;
        break;
    }
    return f;
}
int main()
{
    unsigned int n,i,j;

    scanf("%d",&n);
    for( i = 2;i <= n;i+=2)
        for(j=3;j<=i/2;j+=2)
        if(panduan(j))
        {
            if(panduan(i-j))
            {
                printf("%d=%d+%d\n",i,j,i-j);
              break;
            }
		}
}


void main()
{
   int n,i,j,k,h;
   double a,b;
   scanf("%d",&n);
   for(i=6;i<=n;i=i+2)
   {
	 for(j=3;j<i-2;j=j+2)
     { a=sqrt(j);
       for(k=3;k<=a;k=k+2)
       {  if(j%k==0)break;
	   }
	   if(k>a)
        h=i-j;
        b=sqrt(h);
        for(k=3;k<=b;k=k+2)
        { if(h%k==0)break;
		}
	   if(k>b)break;
	 }
     printf("%d=%d+%d\n",i,j,h);
   }
}


char res[Max+1];           // ?
char a[Max],b[Max];        // ????!
int len1,len2;
void Init(char *a)
{
int i;
for(i=0; i<Max; i++)
{
   a[i] = '0';
}
return ;
}

void Long_Add(char *res,char *newone)   // res????????????????.
{
int i,j;
int len;
int tempsum;
int carry = 0;                 // ??
len = strlen(newone);
for(i=Max-1,j=len-1; i>=0,j>=0; i--,j--)
{
   tempsum = res[i]-'0'+newone[j]-'0'+carry;
   res[i] = tempsum%10+'0';
   carry = tempsum/10;
}
while(carry > 0)   // ------??????????!
{
   tempsum = res[i]-'0'+carry ;
   res[i] = tempsum%10+'0';
   carry = tempsum/10;
   i--;
}
//------------------- ??????????
for(i=0;i<Max;i++)
   if(res[i] != '0')
    break;
if(i==Max)
printf("0");
else
{
int n=i;
for(n;n<Max;n++)
   putchar(res[n]);}
//--------------------------????????????    !

return ;
}
void Input(char *a,char *b)
{
int i,len;
scanf("%s %s",a,b);
len1=strlen(a);
len2=strlen(b);
Init(res);
len=strlen(a);
for(i=len-1; i>=0; i--)
   res[Max+i-len] = a[i];
}
int main()
{
Input(a,b);
Long_Add(res,b);
return 0;
}


void AddBigInt(char *result,char *str1,char *str2)
{
	int i,j,k,a,b,c;
	int x=0;
	char c1,c2;
    for(i=0;;i++)
	{
		if(*(str1+i)=='\0')
		{
			a=i-1;
			break;
		}
	}
	for(i=0;;i++)
	{
		if(*(str2+i)=='\0')
		{
			b=i-1;
			break;
		}
	}
	if(a>b)
		c=a+1;
	else
		c=b+1;
	*(result+c+1)='\0';
	for(i=0;c>=i;i++)
	{
		if(a<i)
			c1='0';
		else
			c1=*(str1+a-i);

		if(b<i)
			c2='0';
		else
			c2=*(str2+b-i);
			*(result+c-i)=(c1-'0'+c2-'0'+x)%10+'0';
		x=(c1-'0'+c2-'0'+x)/10 ;
	}
	if(*result=='0')
	{
		for(i=0;*(result+i);i++)
			*(result+i)=*(result+i+1);
	}
}
int main()
{
    int i;
	char str1[251],str2[251],result[251];
	gets(str1);
	gets(str2);
	AddBigInt(result,str1,str2);
	int index = 0;
    for (i = 0; i < strlen(result);i ++) {
        if ('0' != result[i]) {
            index = i;
            break;
        }
    }

    char k[250];
    strcpy(k, result+ index);
    printf("%s\n",k);
	return 0;
}


int main()
{   int str2(char*str,int*a);
    int add(int*a,int al,int*b,int bl,int*c);
    int print(int*c,int l);
    char s1[max];
    char s2[max];
    int a[max],b[max],c[max];
    int al,bl,cl;
    scanf("%s%s",s1,s2);
    al=str2(s1,a);
    bl=str2(s2,b);
    cl=add(a,al,b,bl,c);
    print(c,cl);

}
int str2(char*str,int*a)
{
    int i,l;
    l=strlen(str);
    for(i=0;i<l;i++){
        a[l-i-1]=str[i]-'0';}
    return l;
}
int add(int*a,int al,int*b,int bl,int*c)
{
    int l=(al>bl)? al:bl;
    int i;
    for(i=0;i<l;i++){
        c[i]=0;
        if(i<al) c[i]+=a[i];
        if(i<bl) c[i]+=b[i];
        }
    c[l]=0;
    for(i=0;i<l;i++){
        if(c[i]>=10){
           c[i+1]+=c[i]/10;
           c[i]=c[i]%10;
           }
           }
    if(c[l]!=0)
    return l+1;
    else
    return l;
}
int print(int*c,int l)
{
    int i,k;
    k=l-1;
    while (c[k]==0&&k>0){
          k--;
          }
    for (i=k;i>=0;i--){
        printf("%d",c[i]);
        }
}


const int maxlen=255;
int main()
{
	char str1[maxlen],str2[maxlen];
	int a1[maxlen],a2[maxlen];
	memset(a1,0,sizeof(a1));
	memset(a2,0,sizeof(a2));
	cin>>str1>>str2;
	for(int i=0;i<strlen(str1);i++)
		a1[i]=str1[strlen(str1)-1-i]-'0';
	for(int i=0;i<strlen(str2);i++)
		a2[i]=str2[strlen(str2)-1-i]-'0';
	int pos=0;
	for(int i=0;i<maxlen-1;i++)
	{
		int temp=a1[i]+a2[i];
		if(temp>=10)
		{
			a1[i]=temp%10;
			a1[i+1]+=1;
		}
		else
			a1[i]=temp;
		if(a1[i]!=0)
			pos=i;
	}
	for(int i=pos;i>=0;i--)
		cout<<a1[i];
	cout<<endl;
	return 0;
}


int main (){
    int w,p,carry=0,x,y,n0=0,result[260];
    char a[260],b[260];
    gets(a);
    gets(b);
    memset(result,0,sizeof(result));
    w=strlen(a)<=strlen(b)?strlen(a):strlen(b);
    p=strlen(a)>=strlen(b)?strlen(a):strlen(b);
    for ( int i = 0 ; i < p ; i++){
        if (i<=w-1){
        x=a[strlen(a)-1-i]-'0';
        y=b[strlen(b)-1-i]-'0';
        }
        else {
                    if(strlen(a)<=strlen(b)){
                    x=0;
                    y=b[strlen(b)-1-i]-'0';
                    }
                    else {
                    x=x=a[strlen(a)-1-i]-'0';
                    y=0;
                    }
        }
        if (x+y+carry>=10){
        result[i]=x+y+carry-10;
        carry=1;
        }
        else {
        result[i]=x+y+carry;
        carry=0;
        }
        if(i==p-1&&carry==1){
        result[i+1]=carry;
        }
    }
    if (carry==1){
    p++;
    }
    for (int j=p-1;j>=0;j--){
    if(result[j]==0){
        n0++;
        for (int q=p-1;q>=j;q--){
        if (result[q]!=0){
        printf("%d",result[j]);
        break;
        }
        }
    }
    else{
    printf("%d",result[j]);
    }
    if(n0==p){
    printf("%d",result[j]);
    }
    }
return 0;
}


//?????0???
void cutzeros(char* a)
{
	int i;
	int unzero=0;
	int l=strlen(a);
	for(i=l-1;i>=0;i--)
	{
		if(a[i]!='0')    //???????
		{
		//	printf("%d %d\n",i,a[i]);  //debug
			a[i+1]='\0';
			unzero=1;
			break;
		}
	}
	if(unzero==0)   //??????
	{
		a[0]='0';
		a[1]='\0';
	}
}
//??????
void reorder(char*a)
{
	int i;
	char c;
	int l=strlen(a);
	for(i=0;i<l/2;i++)
	{
		c=a[i];
		a[i]=a[l-1-i];
		a[l-1-i]=c;
	}
}
//????????
char result[300];
void plus(char*a,char*b)
{
	int i;
	int la=strlen(a);
	int lb=strlen(b);
	int l;
	int r,left=0;
	if(la<=lb)
	{
		l=lb;
		for(i=la;i<=lb;i++)
			a[i]='0';
		b[lb]='0';
	}
	else
	{
		l=la;
		for(i=lb;i<=la;i++)
			b[i]='0';
		a[la]='0';
	}
	for(i=0;i<=l;i++)
	{
		r=(a[i]-'0')+(b[i]-'0')+left;
		result[i]=r%10+'0';
		left=r/10;   //??
	}
	result[l+1]='\0';   //????
}
int main()
{
	char a[260];
	char b[260];
	scanf("%s%s",a,b);
	reorder(a);
	reorder(b);
	plus(a,b);
	cutzeros(result);
	reorder(result);
	printf("%s",result);
	return 0;
}


char num1[MAX_LENGTH+10];
char num2[MAX_LENGTH+10];
int an1[MAX_LENGTH+10] = {0};
int an2[MAX_LENGTH+10] = {0};
int main(){
 int i, j;
 scanf("%s",num1);
 scanf("%s",num2);

 memset(an1, 0, sizeof(an1));
 memset(an2, 0, sizeof(an2));

 //?num1???????????????an1??
 int length1 = strlen(num1);
 int length2 = strlen(num2);
 j = 0;
 for(i = length1-1;i >= 0; i--){
    an1[j++] = num1[i] - '0';
 }
 j=0;
 for(i = length2-1;i >= 0; i--){
    an2[j++] = num2[i] - '0';
 }

 //????
 for(i = 0;i < MAX_LENGTH; i++){
    an1[i] += an2[i];
    if(an1[i] >= 10){
     an1[i] -= 10;
     an1[i + 1]++;
    }
 }

 int flagStart  = FALSE;
 for(i = MAX_LENGTH;i >= 0; i--){
    if(flagStart)
     printf("%d",an1[i]);
    else if(an1[i]){
     printf("%d",an1[i]);
     flagStart = TRUE;
    }
 }
 //????0?????0
 if(flagStart ==  FALSE)
     printf("0\n");

 //??

 return 0;
}


int main()
{
	char num1[251],num2[251];
	int i,len1,len2;
	int num_sum[251];
	for(i=0;i<251;i++)
		num_sum[i]=0;

	cin>>num1;
	cin>>num2;
	len1=strlen(num1);
	len2=strlen(num2);
	char temp_char;
	for(i=0;i<len1/2;i++)
	{
		temp_char=num1[i];
		num1[i]=num1[len1-1-i];
		num1[len1-1-i]=temp_char;
	}
	num1[len1]='\0';
	for(i=0;i<len2/2;i++)
	{
		temp_char=num2[i];
		num2[i]=num2[len2-1-i];
		num2[len2-1-i]=temp_char;
	}
	num2[len2]='\0';
//	cout<<num1<<endl;
//	cout<<num2<<endl;
	if(len1>=len2)
	{
		for(i=0;i<len2;i++)
			num_sum[i]=num1[i]-'0'+num2[i]-'0';
		for(i=len2;i<len1;i++)
			num_sum[i]=num1[i]-'0';
		for(i=0;i<len1;i++)
			if(num_sum[i]>9)
			{
				num_sum[i]=num_sum[i]-10;
				num_sum[i+1]=num_sum[i+1]+1;
			}
	}
	else
	{
		for(i=0;i<len1;i++)
			num_sum[i]=num1[i]-'0'+num2[i]-'0';
		for(i=len1;i<len2;i++)
			num_sum[i]=num2[i]-'0';
		for(i=0;i<len2;i++)
			if(num_sum[i]>9)
			{
				num_sum[i]=num_sum[i]-10;
				num_sum[i+1]=num_sum[i+1]+1;
			}
	}
	int first_pos=0;
	for(i=250;i>=0;i--)
		if(num_sum[i]!=0)
		{
			first_pos=i;
			break;
		}
	for(i=first_pos;i>=0;i--)
		cout<<num_sum[i];
	cout<<endl;
	return 0;
}


int main (void)
{
    int i, j, k, lena, lenb, carry, temp;
    char a[MAX_DIGITS+1], b[MAX_DIGITS+1], c[MAX_DIGITS+2];

    scanf ("%s", a);
    scanf ("%s", b);
    lena = strlen (a);
    lenb = strlen (b);
    carry = 0;
    k = 0;
    i = lena - 1;
    j = lenb - 1;
    while (i >= 0 && j >= 0) {
          temp = a[i] - '0' + b[j] - '0' + carry;
          c[k] = temp % 10 + '0';
          carry = temp / 10;
          i--, j--, k++;
    }

    if (i >= 0)
          while (i >= 0) {
                temp = a[i] - '0' + carry;
                c[k] = temp % 10 + '0';
                carry = temp / 10;
                i--, k++;
          }
    else if (j >= 0)
         while (j >= 0) {
               temp = b[j] - '0' + carry;
               c[k] = temp % 10 + '0';
               carry = temp / 10;
               j--, k++;
         }

    if (carry)
       c[k] = '1';
    else
        k--;

    while (c[k] == '0')
          k--;
    if (k < 0)
       printf ("0");
    else {
         while (k >= 0) {
               printf ("%c", c[k]);
               k--;
         }
    }

    return 0;
}


	char up[300]={NULL};
	char down[300]={NULL};
	int add1[300]={0};
	int add2[300]={0};
	int result[300]={0};

void add()
{
	int uplen=0, downlen=0;

	uplen=strlen(up);
	downlen=strlen(down);

	int temp=strlen(up);
	for(int i=0; i<temp; i++)
	{
		add1[i]=up[uplen-1]-'0';
		uplen--;
	}

	temp=strlen(down);
	for(int i=0; i<temp; i++)
	{

		add2[i]=down[downlen-1]-'0';
		downlen--;

	}

	uplen=strlen(up);
	downlen=strlen(down);

	for(int i=0; i<290; i++)
	{
		result[i] += add1[i]+add2[i];
		if(result[i]>=10)
		{
			result[i]%=10;
			result[i+1]++;
		}
	}
}

int main()
{

	cin>>up>>down;

	add();		//add function

	int start=0;
	for(int i=290; i>=0; i--)
	{

		if(result[i]!=0) {start=1;}

		if(start==1)	{cout<<result[i];}

		if(i==0 && start==0)		//to make sure there is some cout if 0,0 is entered
			{cout<<0;}
	}

return 0;

}


int an1[len + 10];
int an2[len + 10];
char szline1[len + 10];
char szline2[len + 10];
int Add(int maxlen, int* a1, int* a2)
{
	int high = 0;
	for(int i = 0; i < maxlen; i++)
	{
		a1[i] = a1[i] + a2[i];
		if(a1[i] >= 10)
		{
			a1[i] = a1[i] - 10;
			a1[i + 1]++;
		}
	}
	for(int i = maxlen - 1; i >= 0; i--)
		if(a1[i])
		{
			high = i;
			break;
		}
	return high;
}
int main()
{
	cin >> szline1 >> szline2;
	int i, j;
	for(int k = 0; k < len + 10; k++)
	{
		an1[k] = 0;
		an2[k] = 0;
	}
	int len1 = strlen(szline1);
	int len2 = strlen(szline2);
	for(j = 0, i = len1 - 1; i >= 0; i--, j++)
		an1[j] = szline1[i] - '0';
	for(j = 0, i = len2 - 1; i >= 0; i--, j++)
		an2[j] = szline2[i] - '0';
	int high = Add(len, an1, an2);
	for(i = high; i >= 0; i--)
		cout << an1[i];
	cout << endl;
}


int main()
{
    char ca[250],cb[250];
	int  *a,*b,*c,l,i,j;
	scanf("%s %s",ca,cb);
	l=strlen(ca);
	if(strlen(cb)>strlen(ca))
		l=strlen(cb);
	a=(int *)malloc(sizeof(int)*l);
	b=(int *)malloc(sizeof(int)*l);
	c=(int *)malloc(sizeof(int)*(l+1));
	for(i=0;i<l;i++)
	{
		a[i]=0;
		b[i]=0;
		c[i]=0;
	}
	c[l]=0;
	for(i=0;i<strlen(ca);i++)
		a[i]=ca[strlen(ca)-1-i]-'0';
	for(i=0;i<strlen(cb);i++)
		b[i]=cb[strlen(cb)-1-i]-'0';
	for(i=0;i<l;i++)
		c[i]=a[i]+b[i];
	for(i=0;i<l;i++)
	{
		if(c[i]>=10)
		{

			c[i+1]+=(c[i]/10);
			c[i]%=10;
		}
	}
	j=-1;
	for(i=l;;i--)
	{
		if(c[i]!=0)
		{
			j=i;
			break;
		}
	}
	if(j<0)
		printf("0");
	else
		for(i=j;i>=0;i--)
			printf("%d",c[i]);
		printf("\n");

	free(a);
	free(b);
	free(c);
	return 0;
}


int max(int a,int b);
void change();
int main()
{
	char a[210]={'0'},b[210]={'0'};
	int plusa[210]={0},plusb[210]={0},sum[210]={0},lena=0,lenb=0,len=0,i,j,maxpoint=0;
	cin>>a>>b;
	lena=strlen(a);
	lenb=strlen(b);
	for(i=0,j=lena-1;j>=0;j--){
		plusa[i++]=a[j]-'0';
	}
	for(i=0,j=lenb-1;j>=0;j--){
		plusb[i++]=b[j]-'0';
	}
	len=max(lena,lenb);
	for(i=0;i<len;i++){
		sum[i]=plusa[i]+plusb[i];
	}
	for(i=0;i<len;i++){
		if(sum[i]>=10){
			sum[i+1]=sum[i+1]+sum[i]/10;
			sum[i]=sum[i]%10;
		}
	}
	for(i=210-1;i>=0;i--){
		if(sum[i]!=0){
			maxpoint=i;
			break;
		}
	}
	for(i=maxpoint;i>=0;i--)
		cout<<sum[i];

	return 0;
}
int max(int a,int b)
{
	if(a>=b)return a;
	else return b;
}


const int MAX = 260;
int main()
{
	int i = 0,j = 0,k = 0,l = 0;
	int carry = 0 ;                //????
	int temp = 0;
	int len1 = 0,len2 = 0,bigger = 0;
	char ch1[MAX];
	char ch2[MAX];
	int num1[MAX];
	int num2[MAX];
	int result[MAX];
	cin>>ch1>>ch2;
	len1 = strlen(ch1);
	len2 = strlen(ch2);
	if(len1 > len2){bigger = len1;}
	else{bigger = len2;}
	for(j = 0;j < MAX;j++)
	{
		num1[j] = num2[j] = result[j] = 0;
	}
	for(i = 0;i <= len1 - 1;i++)
	{
		num1[MAX - len1 + i] = ch1[i] - '0';
	}
	for(i = 0;i <= len2 -1 ;i++)
	{
		num2[MAX - len2 + i] = ch2[i] - '0';
	}
	for(k = MAX - 1;k >= MAX - bigger;k--)
	{
		carry = 0;
		temp = num1[k] + num2[k] + result[k];
		if(temp < 10){result[k] = temp;carry = 0;}
		else{result[k] = temp % 10;carry = 1;}
		result[k - 1] = result[k -1] + carry;
	}
	for(l = 0;(l <= MAX -1) && (result[l] == 0);l++);
	if(l == MAX){cout<<'0';}
	else
	{
		for(i = l;i <= MAX - 1;i++)
		{
			cout<<result[i];
		}
	}
	return 0;
}


char num1[270],num2[270];int i,j,n1,n2;int ans[270]={0},num[270]={0};
void sup(int,int);
int main(void){
	cin>>num1>>num2;
	int n1=strlen(num1),n2=strlen(num2);
	ans[0]=0;
	if(n1>n2){
        for(i=0;i<n1;i++){//???
            ans[i+1]=(int)num1[i]-48;
        }
        for(i=0;i<n2;i++)num[i]=(int)num2[i]-48;//???
    }
	else{
		for(i=0;i<n2;i++){
            ans[i+1]=(int)num2[i]-48;
        }
		for(i=0;i<n1;i++)num[i]=(int)num1[i]-48;
    }
	int n=min(n1,n2);
	int l=max(n1,n2);
	sup(n,l);
	return 0;
}int it;
void sup(int n,int l){
	if(n==0&&l>0){
        for(i=max(strlen(num1),strlen(num2));i>0;i--){
            if(ans[i]>=10){
                ans[i]%=10;ans[i-1]+=1;
            }
        }
        for (i = 0; ans[i] == 0 && max(strlen(num1),strlen(num2)); i++);
        if (i == max(strlen(num1),strlen(num2)))
            cout << 0;
        else {
            for(;i<=max(strlen(num1),strlen(num2));i++)
                cout<<ans[i];
        }
	}
	else if(n==0){
        for (i = 0; ans[i] == 0 && i < max(strlen(num1),strlen(num2)); i++);
		if (i == max(strlen(num1),strlen(num2)))
            cout << 0;
        else {
            for(;i<=max(strlen(num1),strlen(num2));i++)
                cout<<ans[i];
        }
		return;
	}
	else{
		it=ans[l]+num[n-1];
		if(it<10){ans[l]=it;}
		else{
			ans[l]=it%10;ans[l-1]+=1;
		}
		sup(n-1,l-1);
	}
}


int main()
{
	char as[201],bs[201];
	int a[201],b[201],sum[201];
	int lena,lenb,len,jinwei=0;
	int i,j;
	scanf("%s %s",as,bs);
	lena=strlen(as);
	lenb=strlen(bs);
	len=lena>lenb?lena:lenb;
         memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	for(i=200;i>200-lena;i--)
		a[i]=as[lena-201+i]-'0';
	for(i=200;i>200-lenb;i--)
		b[i]=bs[lenb-201+i]-'0';
	for(i=200;i>200-len-1;i--)
	{
		sum[i]=(jinwei+a[i]+b[i])%10;
		jinwei=(jinwei+a[i]+b[i])/10;
	}
	for(i=200-len;i<=200;i++)
	{
		if(sum[i]!=0)
		{
			for(j=i;j<=200;j++)
				printf("%d",sum[j]);
                       break;
		}
else if(i==200)
printf("0\n");
	}
}


int main()
{
	char string1[250],string2[250];
	scanf("%s",string1);
	scanf("%s",string2);
	int a,b;
	a=strlen(string1);
	b=strlen(string2);
	int c;
	c=a>b?a:b;
    int string3[250],string4[250];
	int i;
	for(i=0;i<a;i++)
	{
		string3[i]=string1[a-i-1]-48;
	}
	for(i=0;i<b;i++)
	{
        string4[i]=string2[b-i-1]-48;
	}
	if(a>b)
	{
		for(i=b;i<a;i++)
			string4[i]=0;
	}
	if(a<b)
	{
		for(i=a;i<b;i++)
			string3[i]=0;
	}

	int string5[250],string6[250];
	for(i=0;i<=c;i++)
		string5[i]=0;
	for(i=0;i<c;i++)
	{
		string6[i]=string3[i]+string4[i]+string5[i];
		if(string6[i]>9)
		{
			string6[i]-=10;
			string5[i+1]=1;
		}
	}
	if(string5[c]!=0)
	{
		printf("%d",string5[c]);
	    for(i=c-1;i>=0;i--)
		{
		printf("%d",string6[i]);
		}
    	printf("\n");
	}
	else
	{
		for(i=c-1;i>=0;i--)
		{
			if(string6[i]!=0)
				break;
		}
		int m;
		for(m=i;m>=0;m--)
		{
		printf("%d",string6[m]);
		}
		printf("\n");
	}
	return 0;
}


int xa[300],xb[300],xx[300];
char a[300],b[300];
int main(){
    int lena,lenb,len,i;
    gets(a);
    gets(b);
    lena=0;
        for(i=0;i<=250;i++){
        xa[i]=0;
        xb[i]=0;
        xx[i]=0;
    }
    while(a[lena]!='\0'){
        xa[lena]=a[lena]-'0';
        lena++;
    }
    lenb=0;
    while(b[lenb]!='\0'){
        xb[lenb]=b[lenb]-'0';
        lenb++;
    }
    for(i=0;i<lena/2;i++){
        int temp=xa[i];xa[i]=xa[lena-i-1];xa[lena-i-1]=temp;
    }
    for(i=0;i<lenb/2;i++){
        int temp=xb[i];xb[i]=xb[lenb-i-1];xb[lenb-i-1]=temp;
    }
    if(lena>lenb)len=lena;else len=lenb;
    int x=0;
    for(i=0;i<len;i++){
        x=x+xa[i]+xb[i];
        xx[i]=x %10;
        x=x/10;
    }
    xx[len]=x;
    while(xx[len]==0 && len >0)len--;
    for(i=len;i>=0;i--)printf("%d",xx[i]);
    printf("\n");
    return 0;
}


int maxi(int a,int b)
{
	if(a<b)
		return b;
	else return a;
}
int main()
{
	char a[260],b[260],flag=0;
	cin.getline(a,251);
	cin.getline(b,251);
	int na[260],nb[260],sum[260],i,j=0;
	int lena=strlen(a),lenb=strlen(b);
	memset(na,0,sizeof(na) );
	memset(nb,0,sizeof(nb) );
	memset(sum,0,sizeof(sum) );
	for(i=lena-1;i>=0;i--)
		na[j++]=a[i]-'0';
	j=0;
	for(i=lenb-1;i>=0;i--)
		nb[j++]=b[i]-'0';
	int m=maxi(lena,lenb);
	for(i=0;i<m;i++)
	{
		sum[i]+=na[i]+nb[i];
		if(sum[i]>=10)
		{
			sum[i]-=10;
			sum[i+1]++;
		}
	}
	i=m;
	while(sum[i]==0) i--; //???????0??
	if(i==-1)
		cout<<0<<endl;
	for(;i >= 0; i--)
		cout << sum[i];
	return 0;
}


/*
 * Name:homework.cpp
 *  Created on: 2012-11-24
 *  Author: Meng Li
 *  Function: ?????
 */

void sum(char a[], char b[]);

int main(){
	char a[250], b[250];
	cin >> a >> b;
	sum(a,b);
	return 0;
}

void sum(char a[], char b[]){
	int length1=0, length2=0, i, count=0;
	int temp=0;
	char c[250];
	length1=strlen(a);
	length2=strlen(b);
	for (i=0;;i++){
		if (i<length1&&i<length2){
			c[i]=a[length1-1-i]-'0'+b[length2-1-i]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i>=length1&&i<length2){
			c[i]=b[length2-i-1]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i<length1&&i>=length2){
			c[i]=a[length1-i-1]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i>=length1&&i>=length2)
			if (temp==1){
				c[i]=temp+'0';
				count++;
				temp=0;
			}
			else
				break;
	}
	for (i=count-1;i>=0;i--)
		if (i==count-1){
			if (c[i]=='0'&&count!=1)
				continue;
			else
				cout << c[i];
		}
		else
			cout << c[i];
}


struct num
{
    int n;
    struct num* next;
    struct num* ahead;
};
struct num* phead1;       //????
struct num* phead2;       //????
struct num* phead3;       //????
struct num* p1;
struct num* p2;
void create(struct num** phead,int n)//???????????
{
    int i=0;
    p1=(struct num*)malloc(sizeof(struct num));
    p1->n=0;
    *phead=p2=p1;
    (*phead)->ahead=NULL;
    for(i=0;i<=n-2;i++)
    {
        p1=(struct num*)malloc(sizeof(struct num));
        p1->n=0;
        if(i==0)
        {
            (*phead)->next=p1;
            p1->ahead=(*phead);
        }
        else
        {
            p2->next=p1;
            p1->ahead=p2;
        }
        p2=p1;
    }
    p2->next=NULL;
}

int main()
{
    char num1[10000];
    char num2[10000];
    //printf("Please input the first integer\n");
    scanf("%s",num1);
    //printf("Please input the next integer\n");
    scanf("%s",num2);
    int i1=0;
    int i2=0;
    int max;
    while(num1[i1]!='\0')
    {
        i1++;
    }
    while(num2[i2]!='\0')
    {
        i2++;
    }
    if(i1>=i2)
    {
        max=i1;
    }
    else
    {
        max=i2;
    }                         //????????????????
    create(&phead1,max);      //?????????max?max?max+1???
    create(&phead2,max);
    create(&phead3,max+1);
    struct num* ptemp1=phead1;
    struct num* ptemp2=phead2;
    int i3;
    for(i3=i1-1;i3>=0;i3--)
    {
        ptemp1->n=num1[i3]-'0';
        ptemp1=ptemp1->next;
    }
    int i4;
    for(i4=i2-1;i4>=0;i4--)
    {
        ptemp2->n=num2[i4]-'0';
        ptemp2=ptemp2->next;
    }                         //????????????
    struct num* ptemp3=phead1;
    struct num* ptemp4=phead2;
    struct num* ptemp5=phead3;
    while(ptemp3!=NULL)
    {
        if(((ptemp3->n)+(ptemp4->n)+(ptemp5->n))>=10)
        {
             ptemp5->n=ptemp5->n+((ptemp3->n)+(ptemp4->n))-10;
             ptemp3=ptemp3->next;
             ptemp4=ptemp4->next;
             ptemp5=ptemp5->next;
             ptemp5->n=(ptemp5->n)+1;
        }
        else
        {
            ptemp5->n=ptemp5->n+(ptemp3->n)+(ptemp4->n);
            ptemp3=ptemp3->next;
            ptemp4=ptemp4->next;
            ptemp5=ptemp5->next;
         }
    }                       //???????????????????????
    struct num* ptemp7=phead3;
    while(ptemp7->next!=NULL)
    {
        ptemp7=ptemp7->next;
    }
    //printf("the answer is:\n");
    if(ptemp7->n==0)
    {
        ptemp7=ptemp7->ahead;
        if(ptemp7->ahead==NULL)
        {
            printf("0");
            return 0;
        }
        else
        {
            while(ptemp7->n==0)
            {
                ptemp7=ptemp7->ahead;
            }
            while(ptemp7!=NULL)
            {
                printf("%d",ptemp7->n);
                ptemp7=ptemp7->ahead;
            }
        }
    }
    else
    {
        while(ptemp7!=NULL)
        {
            printf("%d",ptemp7->n);
            ptemp7=ptemp7->ahead;
        }
    }
    struct num* release1=phead1;//???????free???
    struct num* release2=phead2;
    struct num* release3=phead3;
    while(phead1->next!=NULL)
    {
        release1=phead1->next;
        phead1->next=(phead1->next)->next;
        free(release1);
    }
    free(phead1);
    while(phead2->next!=NULL)
    {
        release2=phead2->next;
        phead2->next=(phead2->next)->next;
        free(release2);
    }
    free(phead2);
    while(phead3->next!=NULL)
    {
        release3=phead3->next;
        phead3->next=(phead3->next)->next;
        free(release3);
    }
    free(phead3);
    return 0;
}


int main()
{
	char szline1[202];
	char szline2[202];
	int an1[202];
	int an2[202];
	cin.getline(szline1, 202);
	cin.getline(szline2, 202);
	int len1 = strlen(szline1);
	int len2 = strlen(szline2);
	memset(an1, 0, sizeof (an1));
	memset(an2, 0, sizeof(an2));
	for (int i = len1 - 1, j = 0; i >= 0; i --)
		an1[j ++] = szline1[i] - '0';
	for (int i = len2 - 1, j = 0; i >= 0; i --)
		an2[j ++] = szline2[i] - '0';
	int begin;
	for (int i = 0; i < 202; i ++)
	{
		an1[i] += an2[i];
		if (an1[i] >= 10)
		{
			an1[i] -= 10;
			an1[i + 1] ++;
		}
		if (an1[i])
			begin = i;
	}
	for (int i = begin; i >= 0; i --)
		cout << an1[i];
	cout << endl;
	return 0;
}


int add(int maxlen,int *num1,int *num2);
int maxlen,len1,len2,highestpos,num1[256],num2[256];
char a[256],b[256];
int main()
{
   int i,j;
   cin>>a>>b;
   len1=strlen(a);
   len2=strlen(b);
   maxlen=(len1>len2)? len1:len2;
   for(i=0,j=len1-1;i<len1;i++,j--)
	   num1[i]=a[j]-'0';
   for(i=0,j=len2-1;i<len2;i++,j--)
	   num2[i]=b[j]-'0';
   highestpos=add(maxlen,num1,num2);
   for(i=highestpos;i>=0;i--)
	   cout<<num1[i];
   return 0;
}
int add(int maxlen,int *num1,int *num2)
{
   int i;
   highestpos=0;
   for(i=0;i<=maxlen;i++)
   {
	   num1[i]=num1[i]+num2[i];
	   if(num1[i]>=10)
	   {
		   num1[i]=num1[i]-10;
		   num1[i+1]++;
	   }
       if(num1[i]) highestpos=i;
   }
   return highestpos;
}


int main()
{
	char a[255],b[255];
	int ua[255]={0},ub[255]={0},sum[255]={0};
	cin>>a>>b;
	int lena,lenb;
	lena=strlen(a),lenb=strlen(b);
	for (int i=0;i<lena;i++)
	{ua[i]=a[lena-1-i]-48;}//cout<<ua[i];}
//	cout<<endl;
	for (int i=0;i<lenb;i++)
	{ub[i]=b[lenb-1-i]-48;}//cout<<ub[i];}
//	cout<<endl;
	int max;
	if (lena>lenb) max=lena;
	else max=lenb;
	int temp;
	for (int i=0;i<max+3;i++)
	{
		temp=ua[i]+ub[i];
		sum[i]=temp%10;
		ua[i+1]+=temp/10;
//		cout<<temp<<endl;
	}
	int mark=0;
	for (int i=254;i>=0;i--)
	{
		if (sum[i]!=0)
		mark=1;
		if (mark==1)
		cout<<sum[i];
	}
	if (mark==0) cout<<"0";
	cout<<endl;
	return 0;
}


int main()
{
	char a[251],b[251];
	int a1[251],b1[251],result[252],n,i,j,k,len1,len2,len;
	cin>>a;
	cin>>b;
	len1=strlen(a);
	len2=strlen(b);
	for(i=0;i<len1;i++)
		a1[len1-1-i]=a[i]-'0';
	for(i=0;i<len2;i++)
		b1[len2-1-i]=b[i]-'0';
	if(len1>len2)
		len=len1;
	else len=len2;
	for(i=0;i<=len;i++)
		result[i]=0;
	for(i=0;i<len;i++)
	{
		if((i<len1)&&(i<len2))
		result[i]+=a1[i]+b1[i];
		else if(i>=len1)
			result[i]+=b1[i];
		else result[i]+=a1[i];
		if(result[i]>9)
		{
			result[i]-=10;
			result[i+1]=1;
		}
	}
	for(i=len;i>=0;i--)
		if(result[i]!=0)
		{
			len=i+1;
			break;
		}
	for(i=len-1;i>=0;i--)
		cout<<result[i];
	cout<<endl;
return 0;
}


int main()
{
	int a[250], b[250];
	int ia=0, ib=0;
	while (1) {
		char c = cin.get();
	if (c=='\n') break;
		a[ia++] = c-'0';
	}
	while (1) {
		char c = cin.get();
		if (c=='\n') break;
		b[ib++] = c-'0';
	}

	int ir;
	int addin=0;
	int result[255];
	for (ir=0; ir<ia || ir<ib; ir++) {
		int ta, tb;
		if (ir>=ia) ta = 0;
		else ta = a[ia-1-ir];
		if (ir>=ib) tb = 0;
		else tb = b[ib-1-ir];

		int tr = ta+tb+addin;
		addin = tr/10;
		tr %= 10;
		result[ir] = tr;
	}
	result[ir] = addin;

	while (ir>=0 && result[ir]==0) ir--;

	if (ir<0) cout << 0 << endl;
	else {
		for (int i=ir; i>=0; i--)
			cout << result[i];
		cout << endl;
	}

	return 0;
}


int countnum(char a[])
{
	int num=0;
	while(a[num]!='\0')
		num++;
	return num;
}

void  clean(char a[])
{
     int num=0;
     int lenth=0;
     while (a[lenth]!='\0')
     lenth ++;
     while(a[num]=='0')
     num++;
     for (int i=0;i<=(lenth-num);i++)
     {
         a[i]=a[i+num];
     }
}

void sort(char a[],int la,int max)
{
	int count=la;
	int differ=max-la;
	for(;count>=0;count--)
	{
		a[count+differ]=a[count];
	}
	for(int i=0;i<differ;i++)
		a[i]='0';
}

void entire(char a[],int la)
{
	char aa[1000];
	int count = la;
	for(;count>=0;count--)
	{
		aa[la-count]=a[count];
	}
	aa[la+1]='\0';
	for(int i=0;i<=la+1;i++)
	{
		a[i]=aa[i];
	}
}
int main()
{
	char a[1000];
	char b[1000];
	scanf("%s %s",a,b);
	//printf("%d",strlen(a));

	if((strlen(a)==1)&&(strlen(b)==1)&&(a[0]=='0')&&(b[0]=='0'));
	else
	{
	clean(a);
	clean(b);
    }
	//printf("%s\n%s\n",a,b);

	int la=countnum(a);
	int lb=countnum(b);
	int max=la;
	if(la<lb)max=lb;
	max=max+1;
	sort(a,la,max);
	sort(b,lb,max);
	max=max-1;
	entire(a,max);
	entire(b,max);
	int sign=0;
	char c[1000];
	for(int i=0;i<=max;i++)
	{
		int temp=sign+a[i]-'0'+b[i]-'0';
		if(temp>9)
		{
			sign =1;
			temp=temp-10;
		}
		else
			sign=0;
		c[i]=temp+'0';
	}
	c[max+1]='\0';
	max=max;
	entire(c,max);
	if(c[0]=='0')
	{
		for(int j=1;j<=max;j++)
			printf("%c",c[j]);
		printf("\n");
	}
	else
	{
    printf("%s\n",c);
	}

}


int main()
{

	//int temp = 0;
	char temp[252];
	int a[252];
	int b[252];
	int ans[252];
	int j1 = 0;
	memset(ans,0,sizeof(ans));
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	scanf("%s",temp);
	for(int i = strlen(temp)-1;i >= 0;i--)
	{
		a[j1++] = temp[i] - '0';
	}
	int j2 = 0;
	scanf("%s",temp);
	for(int i = strlen(temp)-1;i >= 0;i--)
	{
		b[j2++] = temp[i] - '0';
	}
	int j = max(j1,j2);
	memset(ans,0,sizeof(ans));
	for(int i = 0;i < j;i++)
	{
		ans[i] += a[i] + b[i];
		ans[i+1] +=ans[i]/10;
		ans[i] %= 10;
	}
	int key = 0;
	int tag = 0;
	for(int i = j;i >=0;i--)
	{
		if(ans[i] != 0)
			key = 1;
		if(key == 0)
			continue;
		cout<<ans[i];
		tag = 1;
	}
	if(tag == 0)
		cout<<0;
}


struct integer //??????
{
       int n;
       struct integer * pup;
       struct integer * pdown;
};
struct integer * creat(struct integer * head) //????
{
       head=(struct integer*)malloc(sizeof(struct integer));
       head->pup=NULL;
       head->pdown=NULL;
       return head;
}
main()
{
      char a;
      int x=1,y=1,l=1; //k?m?l???????
      struct integer * p,*q,*p1,*head;
      head=p=q=(struct integer *)malloc(sizeof(struct integer));
      p=NULL;
      creat(head);
      scanf("%c",&a);
      while(0<=(a-'0')&&(a-'0')<=9||a=='-')
      {
                                           p1=(struct integer *)malloc(sizeof(struct integer));
                                           if(a=='-')
                                           {
                                                     x=-1; //???????
                                                     scanf("%c",&a);
                                                     continue;
                                           }
                                           else
                                           {
                                               p1->n=x*(a-'0'); //????????????
                                               p1->pdown=p;
                                               p1->pup=head; //???????????????
                                               if(p!=NULL)
                                               p->pup=p1;
                                               head->pdown=p1;
                                               p=p1;
                                               scanf("%c",&a);
                                           }
      }
      p=NULL;
      scanf("%c",&a); //??????
      while(0<=(a-'0')&&(a-'0')<=9||a=='-')
      {
                                           p1=(struct integer *)malloc(sizeof(struct integer));
                                           if(a=='-')
                                           {
                                                     y=-1;
                                                     scanf("%c",&a);
                                                     continue;
                                           }
                                           else
                                           {
                                               p1->n=y*(a-'0');
                                               p1->pup=p;
                                               p1->pdown=head;
                                               head->pup=p1;
                                               if(p!=NULL)
                                               p->pdown=p1;
                                               p=p1;
                                               scanf("%c",&a);
                                           }
      }
      p=q=head;
      while(p->pdown!=NULL&&q->pup!=NULL) //????????
      {
                                             p=p->pdown;
                                             q=q->pup;
                                             p->n=p->n+q->n;
                                             q->n=p->n; //?????????????
      }
      if(p->pdown==NULL&&q->pup!=NULL) //???????????????????????????
      {
                                          q=head->pup;
                                          while(q->pup!=NULL)
                                          {
                                                               if(q->n>9) //??
                                                               {
                                                                          q->pup->n++;
                                                                          q->n=q->n%10;
                                                               }
                                                               if(q->n<0) //??
                                                               {
                                                                          q->pup->n--;
                                                                          q->n=q->n+10;
                                                               }
                                          q=q->pup;
                                          }
                                          if(y<0)
                                          printf("-"); //????????????????????????m????
                                          while(q->n==0&&q!=head->pup) //???????0???????????0
                                          q=q->pdown;
                                          while(q!=head)
                                          {
                                                        printf("%d",y*(q->n));
                                                        q=q->pdown;
                                          }
                                          while(p!=NULL) //free?????
                                          {
                                                         q=p;
                                                         p=p->pup;
                                                         free(q);
                                          }
      }
      else
      {
          p=head;
          while(p->pdown!=NULL) //?????????????????
          {
                                 p=p->pdown;
                                 if(p->n>=10&&p->pdown!=NULL)
                                 {
                                                              (p->pdown->n)++;
                                                              p->n=p->n-10;
                                 }
                                 if(p->n<0&&p->pdown!=NULL)
                                 {
                                                            (p->pdown->n)--;
                                                            p->n=p->n+10;
                                 }
          }
          if(p->n<0)
          {
                    printf("-");
                    l=-1;
                    }
                    while(p->n==0&&p!=head->pdown) //???????0???????????0
                    p=p->pup;
                    while(p!=head) //??
                    {
                                   printf("%d",l*(p->n));
                                   p=p->pup;
                    }
                    while(q!=NULL) //free?????
                    {
                                   p=q;
                                   q=q->pdown;
                                   free(p);
                    }
          }
}


int main()
{
	char input_string1[251],input_string2[251];
	char num1[252],num2[252];
	char result[252];
	result[251]='\0';
	scanf("%s",&input_string1);
	scanf("%s",&input_string2);
	memset(num1,'0',252);
	memset(num2,'0',252);
	strcpy(num1+(251-strlen(input_string1)),input_string1);
	strcpy(num2+(251-strlen(input_string2)),input_string2);
	int i;
	int carry=0;
	for(i=250;i>=0;i--)
	{
		if((num1[i]-'0')+(num2[i]-'0')+carry>=10)
		{
			result[i]=(num1[i]-'0')+(num2[i]-'0')+carry-10+'0';
			carry=1;
		}
		else
		{
			result[i]=(num1[i]-'0')+(num2[i]-'0')+carry+'0';
			carry=0;
		}

	}
	for(i=0;i<=249;i++)
	{
		if(result[i]!='0')
		{
			break;
		}
	}
	printf("%s",result+i);

	return 0;

}


char plus1[SIZE + 10] = {'\0'};
char plus2[SIZE + 10] = {'\0'};
int p1[SIZE + 10] = {0};
int p2[SIZE + 10] = {0};
int result[SIZE + 10] = {0};
int main ()
{
	int i = 0, end = -1;
	cin >> plus1 >> plus2;
	for(i = strlen(plus1) - 1; i >=0; i --)
		p1[strlen(plus1) - 1 - i] = plus1[i] - '0';
	for(i = strlen(plus2) - 1; i >=0; i --)
		p2[strlen(plus2) - 1 - i] = plus2[i] - '0';
	for(i = 0; i < SIZE + 5; i ++)
	{
		result[i] = result[i] + p1[i] + p2[i];
		if(result[i] >= 10)
		{
			result[i + 1] ++;
			result[i] = result[i] - 10;
		}
		if(result[i])
			end = i;
	}
	if(end == -1)
		cout << 0 << endl;
	else
		for(i = end; i >= 0; i --)
			cout << result[i];
	return 0;
}


int an1[MAXLEN+10];
int an2[MAXLEN+10];
char sline1[MAXLEN+10];
char sline2[MAXLEN+10];
int ADD(int nMAXLEN, int* a1, int* a2)
{
    int i=0, j=0;
    int highest;
    for(i=0; i<=nMAXLEN; i++)
    {
        a1[i]+=a2[i];
        if(a1[i]>=10)
        {
            a1[i]-=10;
            a1[i+1]++;
        }
        if(a1[i]>0)
            highest=i;
    }
    return highest;
}
int main()
{
    int i=0, j=0;
    memset(an1, 0, sizeof(an1));
    memset(an2, 0, sizeof(an2));
    //scanf("%s",sline1);
    //scanf("%s",sline2);
    cin>>sline1>>sline2;
    int len1 = strlen(sline1);
    for(j=0, i = len1 - 1; i>=0; i--)
    {
        an1[j++] = sline1[i] - '0';
    }
    int len2 = strlen(sline2);
    for(j=0, i = len2 - 1; i>=0; i--)
    {
        an2[j++] = sline2[i] - '0';
    }
    int k = ADD(MAXLEN, an1, an2);
    for(i=k; i>=0; i--)
    {
        //printf("%d",an1[i]);
        cout<<an1[i];
    }
    return 0;
}


char a[300];
char b[300];
char c[300];

int main(){
	cin >> a;
	cin >> b;
	int la ,lb;
	la = strlen(a);
	lb = strlen(b);
	if(la > lb){
		strcpy(c,a);
		strcpy(a,b);
		strcpy(b,c);
	}
	la = strlen(a);
	lb = strlen(b);
	for(int i = 0 ; i < 300 ; i++)
		c[i] = 0;
	c[0] = '0';
	for(int i = lb-1 ; i >= 0 ; i--){
		if(i >= lb - la){
			c[i+1] += b[i] + (a[i+la-lb] - '0');
		}
		else{
			c[i+1] += b[i];
		}
		if(c[i+1] >'9'){
			c[i+1] -= 10;
			c[i] += 1;
		}
	}
	int i = 0;
	while(c[i] == '0')
		i++;
	if(i <= lb){
		for(; i <= lb; i++)
			cout << c[i];
	}
	else
		cout <<0;
	cout << endl;
	return 0;
}


/*
 * Name:homework.cpp
 *  Created on: 2012-11-24
 *  Author: Meng Li
 *  Function: ?????
 */

void sum(char a[], char b[]);                     //????

int main(){                                       //????????????
	char a[250], b[250];
	cin >> a >> b;
	sum(a,b);
	return 0;
}

void sum(char a[], char b[]){                    //???????
	int length1=0, length2=0, i, count=0;
	int temp=0;
	char c[250];
	length1=strlen(a);                          //????????
	length2=strlen(b);
	for (i=0;;i++){
		if (i<length1&&i<length2){                         //??????????????????4????????temp?????count??????
			c[i]=a[length1-1-i]-'0'+b[length2-1-i]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i>=length1&&i<length2){
			c[i]=b[length2-i-1]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i<length1&&i>=length2){
			c[i]=a[length1-i-1]+temp;
			if (c[i]>'9'){
				c[i]=c[i]-10;
				temp=1;
			}
			else
				temp=0;
			count++;
		}
		else if (i>=length1&&i>=length2)
			if (temp==1){
				c[i]=temp+'0';
				count++;
				temp=0;
			}
			else                //???????
				break;
	}
	int flag=0;
	for (i=count-1;i>=0;i--)                    //?????????????,??????
		if (c[i]=='0'&&i!=0&&flag==0)
			continue;
		else{
			cout << c[i];
			flag=1;
		}
}


int main(void)
{
    char numA[MAXN];
    char numB[MAXN];
    char ans[MAXN];
    char c;
    int maxLen;
    int i,aLen,bLen,cx,ax,j,flag;
    scanf("%s",numA);
    scanf("%s",numB);
    aLen = strlen(numA);
    bLen = strlen(numB);
    for(i=0;i != aLen/2; i++){
        c = numA[i];
        numA[i] = numA[aLen-1-i];
        numA[aLen-1-i] = c;
    }
    for(i=0;i != bLen/2; i++){
        c = numB[i];
        numB[i] = numB[bLen-1-i];
        numB[bLen-1-i] = c;
    }
    cx = 0;
    maxLen = aLen > bLen ? aLen : bLen;
    for(i=0;i != maxLen;i++){
        if(i < aLen && i < bLen){
            ax = (numA[i]-'0') + (numB[i]-'0') + cx;
            ans[i] = (ax%10) + '0';
            if(ax >= 10){
                cx = 1;
            }
            else{
                cx = 0;
            }
        }
        else if(i >= bLen){
            ax = (numA[i]-'0') + cx;
            ans[i] = (ax%10) + '0';
            if(ax >= 10){
                cx = 1;
            }
            else{
                cx = 0;
            }
        }
        else if(i >= aLen){
            ax = (numB[i]-'0') + cx;
            ans[i] = (ax%10) + '0';
            if(ax >= 10){
                cx = 1;
            }
            else{
                cx = 0;
            }
        }
    }
    if(cx != 0){
        ans[i++] = cx + '0';
    }
    flag=0;
    for(j = i-1;j >= 0;j--){
        if(ans[j]!='0'){
          flag=1;
          }
          if(flag==1){
           printf("%c",ans[j]);
           }
           if(flag==0 && j==0){
             printf("0");
             }
    }
    return 0;
}


int shuru[1000000];
int xiaoshuchangdu[10],changdu[10],zhengshuchangdu[10];
int fuzhu;       //????????????
int wuaoshu;
int a[10][1000000];
int n=0;

void clear (int k)
{
     for (int i=0;i<=999999;i++)
     a[k][i]=0;
     xiaoshuchangdu[k]=0;
     changdu[k]=1;
     zhengshuchangdu[k]=1;
}

void xieru (int k)
{
    fuzhu=0;
    for (int i=1;;i++)
    {
        shuru[i]=getchar ();
        if (shuru [i]==10)
        {
           changdu[k]=i-1;
           break;
        }
        if (shuru [i]==46)
        {
           fuzhu=1;
           xiaoshuchangdu[k]--;
           i--;
        }
        a[k][i]=shuru[i]-48;
        if (fuzhu==1)
        xiaoshuchangdu[k]++;
    }
    zhengshuchangdu[k]=changdu[k]-xiaoshuchangdu[k];
}

void shuchu (int m)
{
     for (int i=1;i<=zhengshuchangdu[m];i++)
     cout <<a[m][i];
     if (xiaoshuchangdu[m]>0)
     {
        cout <<".";
        for (int i=zhengshuchangdu[m]+1;i<=changdu[m];i++)
        cout <<a[m][i];
     }
}

void jiafa (int k,int l,int m)
{
     clear(m);
     int fzheng=max(zhengshuchangdu[k],zhengshuchangdu[l])+1;
     int fxiao=max(xiaoshuchangdu[k],xiaoshuchangdu[l]);
     for (int i=fxiao+fzheng;i>=1;i--)
     {
         a[m][i]=a[m][i]+(a[k][zhengshuchangdu[k]+i-fzheng]+a[l][zhengshuchangdu[l]+i-fzheng]);
         a[m][i-1]=a[m][i-1]+a[m][i]/10;
         a[m][i]=a[m][i]%10;
     }
     while (1)
     {
         if (a[m][1]!=0)
         break;
         if (fzheng+fxiao==1)
         break;
         for (int i=0;i<=fxiao+fzheng;i++)
         a[m][i]=a[m][i+1];
         fzheng=fzheng-1;
     }
     for (int i=fzheng+fxiao;i>=1;i--)
     {
         if (a[m][i]!=0)
         break;
         fxiao=fxiao-1;
     }
     zhengshuchangdu[m]=fzheng;
     xiaoshuchangdu[m]=fxiao;
     changdu[m]=fxiao+fzheng;
}

void jiandancheng (int n,int k,int m)
{
     clear(m);
     int fzheng=zhengshuchangdu[k]+1;
     int fxiao=xiaoshuchangdu[k];
     for (int i=fxiao+fzheng;i>=1;i--)
     {
         a[m][i]=a[m][i]+a[k][zhengshuchangdu[k]+i-fzheng]*n;
         a[m][i-1]=a[m][i-1]+a[m][i]/10;
         a[m][i]=a[m][i]%10;
     }
     while (1)
     {
         if (a[m][1]!=0)
         break;
         if (fzheng+fxiao==1)
         break;
         for (int i=0;i<=fxiao+fzheng;i++)
         a[m][i]=a[m][i+1];
         fzheng=fzheng-1;
     }
     for (int i=fzheng+fxiao;i>=1;i--)
     {
         if (a[m][i]!=0)
         break;
         fxiao=fxiao-1;
     }
     zhengshuchangdu[m]=fzheng;
     xiaoshuchangdu[m]=fxiao;
     changdu[m]=fxiao+fzheng;
}

void chengfa (int k,int l,int m)                                 //????? 8.9?????
{
     int fxiao;
     int fzheng;
     clear(m);
     for (int i=1;i<=changdu[l];i++)
     {
         jiandancheng(a[l][i],k,9);
         jiafa(m,9,8);
         if (i==changdu[l])
         {
            jiandancheng(1,8,m);
            break;
         }
         jiandancheng(10,8,m);
     }
     fxiao=xiaoshuchangdu[k]+xiaoshuchangdu[l];
     fzheng=changdu[m]-fxiao;
     while (1)
     {
         if (a[m][1]!=0)
         break;
         if (fzheng+fxiao==1)
         break;
         for (int i=0;i<=fxiao+fzheng;i++)
         a[m][i]=a[m][i+1];
         fzheng=fzheng-1;
     }
     for (int i=fzheng+fxiao;i>=1;i--)
     {
         if (a[m][i]!=0)
         break;
         fxiao=fxiao-1;
     }
     zhengshuchangdu[m]=fzheng;
     xiaoshuchangdu[m]=fxiao;
     changdu[m]=fxiao+fzheng;
}

void chengfang (int k,int n,int m)                         //?????7,6?????
{
     cout <<n<<endl;
     if (wuaoshu==0)
     {
        clear(6);
        a[6][1]=1;
        wuaoshu=1;
     }
     clear(7);
     jiandancheng(1,k,7);
     jiandancheng(1,k,m);
     if (n%2==0)
     {
        n=n/2;
        chengfa(m,7,k);
        chengfang (k,n,m);
     }
     else
     {
          if (n%2==1&&n!=1)
          {
             n=n-1;
             chengfa(6,k,7);
             jiandancheng(1,7,6);
             chengfang(k,n,m);
          }
          else
          {
               chengfa(6,m,7);
               jiandancheng(1,7,m);
          }
     }
}

int main ()
{
    xieru(1);
    xieru(2);
    jiafa(1,2,3);
    shuchu(3);
    return 0;
}


int high(int *, int *,int);
const int maxmax = 200;
char a[maxmax + 1], b[maxmax + 1];
int aa[maxmax + 1], bb[maxmax];
int main()
{
	cin.getline(a,201);
	cin.getline(b,201);
	memset(aa, 0, sizeof(aa));
	memset(bb, 0, sizeof(bb));
	int length1 = strlen(a), length2 = strlen(b);
	int i, j;
	for (i = 0, j = length1 - 1; j >= 0; j--)
	{
		aa[i++] = a[j] - '0';
	}
	for (i = 0, j = length2 - 1; j >= 0; j--)
	{
		bb[i++] = b[j] - '0';
	}
	if (aa[0] == 0 && bb[0] == 0)
		cout<<0<<endl;
	else
	{
		int highest = high(aa, bb, maxmax + 1);
		for (i = highest; i >= 0; i--)
		{
			cout<<aa[i];
		}
	}
	return 0;
}
int high(int *a1, int *b1, int m)
{
	int d;
	for (int i = 0; i < m; i++)
	{
		a1[i] += b1[i];
		if (a1[i] >= 10)
		{
			a1[i] -= 10;
			a1[i + 1] += 1;
		}
		if (a1[i] != 0)
			d = i;
	}
	return d;
}


const int len=300;
char a[len],b[len];
int an[len],bn[len];

int main()
{
	cin>>a>>b;
	memset(an,0,sizeof(an));
	memset(bn,0,sizeof(bn));
	int lena=strlen(a);
	int lenb=strlen(b);
	int i=0;
	int j=0;
	for(i=lena-1;i>=0;i--)
		an[j++]=a[i]-'0';
	j=0;
	for(i=lenb-1;i>=0;i--)
		bn[j++]=b[i]-'0';
	for(i=0;i<210;i++)
	{
		an[i]+=bn[i];
		if(an[i]>9)
		{
			an[i]-=10;
			an[i+1]++;
		}
	}
	i=len-3;
	while(an[i]==0&&i>0)
		i--;
	if(i==0)
		cout<<an[0];
	else
		for( ;i>=0;i--)
			cout<<an[i];
}


int main()
{   void jiafa(char a[] ,char b[] ,int c[]);
	char a[300],b[300];
	cin>>a>>b;
	int jieguo[300];
	memset(jieguo,0,sizeof(jieguo));
	jiafa(a,b,jieguo);
	int i=296;
	while(jieguo[i]==0&&i>0)
		i--;
	if(i==0)
		cout<<jieguo[0];
	else
		for( ;i>=0;i--)
			cout<<jieguo[i];
}

void jiafa(char a[],char b[],int c[])
{
	const int len=300;
	int an[len],bn[len];
	memset(an,0,sizeof(an));
	memset(bn,0,sizeof(bn));
	int lena=strlen(a);
	int lenb=strlen(b);
	int i=0;
	int j=0;
	for(i=lena-1;i>=0;i--)
		an[j++]=a[i]-'0';
	j=0;
	for(i=lenb-1;i>=0;i--)
		bn[j++]=b[i]-'0';
	for(i=0;i<len;i++)
	{
		an[i]+=bn[i];
		if(an[i]>9)
		{
			an[i]-=10;
			an[i+1]++;
		}
		c[i]=an[i];
	}
}


int main()
{
	char a[2000]={0};
	char b[2000]={0};
	char c[3000]={0};
	scanf("%s",a);
	scanf("%s",b);
	int len1=strlen(a);
	int len2=strlen(b);
	if(len1<len2)
		{
		strcpy(c,a);
		strcpy(a,b);
		strcpy(b,c);
		}
	len1=strlen(a);
	len2=strlen(b);
	memset(c,0,(len1+1)*sizeof(int));
	for(int i=0;i<len1-len2;i++)
		c[i]=a[i]-'0';
	for(int i=0;i<len2;i++)
		c[i+len1-len2]=a[i+len1-len2]+b[i]-'0'-'0';
	int add=0;
	for(int i=len1-1;i>=0;i--)
		{
		c[i]+=add;
		add=c[i]/10;
		c[i]=c[i]%10;
		}
	int judge=0,judge1=0;
	if(add!=0)
		{
		printf("%d",add);
		judge=1;
		judge1=1;
		}
	for(int i=0;i<len1;i++)
		{
		if(judge!=0)
			{
			printf("%d",c[i]);
			judge1=1;
			}
		else
			{
			if(c[i]!=0)
				{
				printf("%d",c[i]);
				judge=1;
				judge1=1;
				}
			}
		}
	if(judge1==0)
		printf("%d",c[0]);
}


int main()
{

	char up[300]={NULL};
	char down[300]={NULL};
	int add1[300]={0};
	int add2[300]={0};
	int result[300]={0};
	int uplen=0, downlen=0;

	cin>>up>>down;

	uplen=strlen(up);
	downlen=strlen(down);

	int temp=strlen(up);
	for(int i=0; i<temp; i++)
	{
		add1[i]=up[uplen-1]-'0';
	//	cout<<add1[i];
		uplen--;

	}

	temp=strlen(down);
	for(int i=0; i<temp; i++)
	{

		add2[i]=down[downlen-1]-'0';
		//cout<<add2[i];

		downlen--;

	}

	uplen=strlen(up);
	downlen=strlen(down);

	for(int i=0; i<290; i++)
	{
		result[i] += add1[i]+add2[i];
		if(result[i]>=10)
		{
			result[i]%=10;
			result[i+1]++;

		}
	}

	int start=0;

	for(int i=290; i>=0; i--)
	{

		if(result[i]!=0)
			start=1;

		if(start==1)
		{
			cout<<result[i];

		}

	if(i==0 && start==0)
	cout<<0;

	}

return 0;

}


int main()
{
	char x[251], y[251];
	int i, j, array[251];
	for (i = 0; i < 251; i ++)
		array[i] = 0;
	cin >> x >> y;
	if (x[0] == '0' && y[0] == '0' && strlen(x) == 1 && strlen(y) == 1)
		cout << 0;
	for (i = 0; i < strlen(x) && i < strlen(y); i ++)
	{
		array[i] = array[i] + x[strlen(x) - i - 1] + y[strlen(y) - i - 1] -2 * '0';
		if (array[i] > 9)
		{
			array[i + 1] ++;
			array[i] = array[i] - 10;
		}
	}
	if (strlen(x) >= strlen(y))
		for (j = i; j < strlen(x); j ++)
		{
			array[j] = array[j] + x[strlen(x)- j - 1] - '0';
			if (array[j] > 9)
			{
				array[j + 1] ++;
				array[j] = array[j] - 10;
			}
		}
	else
        for (j = i; j < strlen(y); j ++)
		{
			array[j] = array[j] + y[strlen(y)- j - 1] - '0';
			if (array[j] > 9)
			{
				array[j + 1] ++;
				array[j] = array[j] - 10;
			}
		}
	for (i = 250; array[i] == 0; i --){}
	for (j = i; j >= 0; j --)
		cout << array[j];
	cout << endl;
	return 0;
}


int  main()
{
     char str1[405],str2[405];
     cin>>str1>>str2;
     int x=strlen(str1),y=strlen(str2);
     int maxlen=x>y?x:y;
     int ans1[405],ans2[405],i,j=0;
     memset(ans1,0,sizeof(ans1));
     memset(ans2,0,sizeof(ans2));
     for (i=x-1;i>=0;i--)
     ans1[j++]=str1[i]-'0';
     j=0;
     for (i=y-1;i>=0;i--)
     ans2[j++]=str2[i]-'0';
     for (i=0;i<maxlen;i++)
     {
         ans1[i]+=ans2[i];
         if (ans1[i]>=10){
         ans1[i]-=10;
         ans1[i+1]++;}
     }
     i=maxlen;
     while(ans1[i]==0) i--;
     if (i<0)
     cout<<0;
     else{
     for (;i>=0;i--)
     cout<<ans1[i];
     }
     return 0;
}


struct integer //??????
{
       int n;
       struct integer * pup;
       struct integer * pdown;
};
struct integer * creat(struct integer * head) //????
{
       head=(struct integer*)malloc(sizeof(struct integer));
       head->pup=NULL;
       head->pdown=NULL;
       return head;
}
main()
{
      char a;
      int x=1,y=1,z=1; //?x,y,z??????
      struct integer *p1,*p2,*p3,*head;
      head=p1=p2=(struct integer *)malloc(sizeof(struct integer));
      p1=NULL;
      creat(head);
      scanf("%c",&a);
      while(0<=(a-'0')&&(a-'0')<=9||a=='-')
      {
                                           p3=(struct integer *)malloc(sizeof(struct integer));
                                           if(a=='-')
                                           {
                                                     x=-1; //???????
                                                     scanf("%c",&a);
                                                     continue;
                                           }
                                           else
                                           {
                                               p3->n=x*(a-'0'); //????????????
                                               p3->pdown=p1;
                                               p3->pup=head; //???????????????
                                               if(p1!=NULL)
                                               p1->pup=p3;
                                               head->pdown=p3;
                                               p1=p3;
                                               scanf("%c",&a);
                                           }
      }
      p1=NULL;
      scanf("%c",&a); //??????
      while(0<=(a-'0')&&(a-'0')<=9||a=='-')
      {
                                           p3=(struct integer *)malloc(sizeof(struct integer));
                                           if(a=='-')
                                           {
                                                     y=-1;
                                                     scanf("%c",&a);
                                                     continue;
                                           }
                                           else
                                           {
                                               p3->n=y*(a-'0');
                                               p3->pup=p1;
                                               p3->pdown=head;
                                               head->pup=p3;
                                               if(p1!=NULL)
                                               p1->pdown=p3;
                                               p1=p3;
                                               scanf("%c",&a);
                                           }
      }
      p1=p2=head;
      while(p1->pdown!=NULL&&p2->pup!=NULL) //????????
      {
                                             p1=p1->pdown;
                                             p2=p2->pup;
                                             p1->n=p1->n+p2->n;
                                             p2->n=p1->n; //?????????????
      }
      if(p1->pdown==NULL&&p2->pup!=NULL) //???????????????????????????
      {
                                         p2=head->pup;
                                          while(p2->pup!=NULL)
                                          {
                                                               if(p2->n>9) //??
                                                               {
                                                                          p2->pup->n++;
                                                                          p2->n=p2->n%10;
                                                               }
                                                               if(p2->n<0) //??
                                                               {
                                                                          p2->pup->n--;
                                                                          p2->n=p2->n+10;
                                                               }
                                          p2=p2->pup;
                                          }
                                          if(y<0)
                                          printf("-"); //????????????????????????y????
                                          while(p2->n==0&&p2!=head->pup) //???????0???????????0
                                          p2=p2->pdown;
                                          while(p2!=head)
                                          {
                                                        printf("%d",y*(p2->n));
                                                        p2=p2->pdown;
                                          }
                                          while(p1!=NULL) //free?????
                                          {
                                                         p2=p1;
                                                         p1=p1->pup;
                                                         free(p2);
                                          }
      }
      else
      {
          p1=head;
          while(p1->pdown!=NULL) //?????????????????
          {
                                 p1=p1->pdown;
                                 if(p1->n>=10&&p1->pdown!=NULL)
                                 {
                                                              (p1->pdown->n)++;
                                                              p1->n=p1->n-10;
                                 }
                                 if(p1->n<0&&p1->pdown!=NULL)
                                 {
                                                            (p1->pdown->n)--;
                                                            p1->n=p1->n+10;
                                 }
          }
          if(p1->n<0)
          {
                    printf("-");
                    z=-1;
                    }
                    while(p1->n==0&&p1!=head->pdown) //???????0???????????0
                    p1=p1->pup;
                    while(p1!=head) //??
                    {
                                   printf("%d",z*(p1->n));
                                   p1=p1->pup;
                    }
                    while(p2!=NULL) //free?????
                    {
                                   p1=p2;
                                   p2=p2->pdown;
                                   free(p1);
                    }
          }
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
getchar();
}


int an1[MAX_LEN+10];
int an2[MAX_LEN+10];
char szLine1[MAX_LEN+10];
char szLine2[MAX_LEN+10];
int Add(int nMaxLen , int * an1, int * an2)
//?????? nMaxLen ???? an1?an2 ???????an1,
//an1[0],an2[0]?????
{
	int nHighestPos = 0;
	for(int i = 0;i < nMaxLen; i ++ ) {
		an1[i] += an2[i];		//????
		if( an1[i] >= 10 ) {		//??????
			an1[i] -= 10;
			an1[i+1] ++;			//??
		}
		if( an1[i] )
			nHighestPos = i; //????????
	}
	return nHighestPos;
}
int main()   {
	scanf("%s", szLine1);  scanf("%s", szLine2);
	int i, j;
	//???memeset???an1???sizeof(an1)??????0
	//sizeof(an1)????an1???
	//memset???string.h???
	memset( an1, 0, sizeof(an1));
	memset( an2, 0, sizeof(an2));
	//???szLine1???????????????an1???
	//an1[0]?????
	int nLen1 = strlen( szLine1);
	for(j =0, i = nLen1 - 1;i >= 0 ; i --)
		an1[j++] = szLine1[i] - '0';
	int nLen2 = strlen(szLine2);
	for(j=0, i = nLen2 - 1;i >= 0 ; i --)
		an2[j++] = szLine2[i] - '0';
	int nHighestPos = Add(MAX_LEN,an1,an2);
	for( i = nHighestPos; i >= 0; i -- )  printf("%d", an1[i]);
	return 0;
}


char a[252], b[252];
int an[252], bn[252], rn[252];
char res[252], temp[252];
int lenA, lenB, len;
void change()
{
	int i;
	for(i = 0; i < lenA; i ++)
	{
		an[i] = a[lenA - i - 1] - '0';
	//	cout << an[i];
	}
//	cout << endl;
	for(i = 0; i < lenB; i ++)
	{
		bn[i] = b[lenB - i - 1] - '0';
	//	cout << bn[i];
	}
	//cout << endl;
	if(lenA > lenB)
	{
		len = lenA;
		for(i = lenB; i < lenA; i ++)
			bn[i] = 0;
	}
	else if(lenB > lenA)
	{
		len = lenB;
		for(i = lenA; i < lenB; i ++)
			an[i] = 0;
	}
	else len = lenB;
//	cout <<"len: " << len << endl;
}
void addAB()
{
	int i;

	for(i = 0; i < len; i ++)
	{
		rn[i] += an[i] + bn[i];
		if(rn[i] > 9)
		{
			rn[i] = rn[i] - 10;
			rn[i + 1] ++;
		}
	}
//	cout << "len: " << i << ":  " << rn[i] << endl;
//		cout << len << endl;
	if(rn[i] == 1)
		len ++;
//	cout << len << endl;

	for(i = 0; i < len; i ++)
	{
		temp[i] = rn[len - i - 1] + '0';
//		cout << temp[i];
	}
//	cout << endl;
	int begin = 1;
//	cout << "temp[0]: " << temp[0] << endl;
//	if(temp[0] == 0)
//		begin = 1;
//	cout << "begin: " << begin << endl;
	while(temp[begin] == 0)
	{
		begin ++;
	}
	if(len == 1) begin = 0;
	if(temp[0] != '0') begin = 0;
//		cout << "len: " << len << endl;
//	cout << "begin: " << begin << endl;
	for(i = 0; i < len - begin; i ++)
		res[i] = temp[i + begin];
}

int main()
{

	cin.getline(a, 252);
	cin.getline(b, 252);
	lenA = strlen(a);
	lenB = strlen(b);
	memset(rn, 0, sizeof(rn));
	change();
	addAB();
	cout << res << endl;
	return 0;
}


int f(char x)
{
    int xx=x-'0';
	return xx;
}
int num1(int x,int y)
{
    if((x+y)>9)
      return x+y-10;
    else return x+y;
}
int num10(int x,int y)
{
    if((x+y)>9)
       return 1;
    else return 0;
}
int max(int x,int y)
{
    if(x>y)return x;
    else return y;
}
int main()
{
    char a[251],b[251],c[251];
    scanf("%s",a);
    scanf("%s",b);
    int la=strlen(a),lb=strlen(b);
    int mx=max(la,lb);
    int i,j,k,p=0;
    for(i=la-1,j=lb-1,k=0;k<mx;i--,j--,k++)
    {
       if(i>=0&&j>=0)
       {
         c[k]=num1(f(a[i]),f(b[j])+p);
         p=num10(f(a[i]),f(b[j])+p);
       }
       else if(i>=0&&j<0)
       {
         c[k]=num1(f(a[i]),p);
         p=num10(f(a[i]),p);
       }
       else
       {
         c[k]=num1(f(b[j]),p);
         p=num10(f(b[j]),p);
       }
    }
    int frag=0;
    if(p==0)
      for(i=mx-1;i>=0;i--)
      {
         if(c[i]>0)frag=1;
         if(frag==1)
         printf("%d",c[i]);
         else if(i==0)printf("0");
      }
    else
    {
         c[mx]=1;
         for(i=mx;i>=0;i--)printf("%d",c[i]);
    }

    return 0;
}


int main()
{
	char a[500], b[500];
	cin >> a >> b;
	int length1 =0, length2 = 0, c = 0, i = 0, flag1 = 1;
	length1 = strlen(a);
	length2 = strlen(b);
	int a1[501], b1[501];
	int result[501];
	memset(a1,0,sizeof(a1));
	memset(b1,0,sizeof(b1));
	memset(result,0,sizeof(result));
	for(i = 0; i <= length1 - 1; i++)
	{
		a1[length1 - 1 - i] = a[i] - '0';
	}
	for(i = 0; i <= length2 - 1; i++)
	{
		b1[length2 - 1 - i] = b[i] - '0';
	}
	for(i = 0; i <= 500; i++)
	{
		result[i] = a1[i] + b1[i] + result[i];
		if(result[i] >= 10)
		{
			result[i+1] = result[i] / 10 + result[i+1];
			result[i] = result[i] % 10;
		}
	}
	for(i = 500; i >= 0; i--)
	{
		if(result[i] != 0)
		{
			flag1 = 0;
			break;
		}
	}
	c = i;
	if(flag1 == 0)
	{
		for(i = c; i >= 0; i--)
		{
			cout << result[i];
		}
		cout << endl;
	}
	if(flag1 == 1)
	{
		cout << 0 << endl;
	}
	return 0;
}


//2981?????
// sst 2012.8.8
int main()
{
    char str1[MAX_LEN+10],str2[MAX_LEN+10];
    int  an1[MAX_LEN+10],an2[MAX_LEN+10];
    int i,j;
    gets(str1);
    gets(str2);
    memset(an1,0,sizeof(an1));
    memset(an2,0,sizeof(an2));
   int  Lenth1=strlen(str1);
   for(j=0,i=Lenth1-1;i>=0;i--,j++)
       an1[j]=str1[i]-'0';
   int Lenth2=strlen(str2);
   for(j=0,i=Lenth2-1;i>=0;i--,j++)
       an2[j]=str2[i]-'0';
       int Highestpos=0;
   for(int i=0;i<MAX_LEN;i++)
   {
          an1[i]=an1[i]+an2[i];
          if(an1[i]>=10)
          {
                       an1[i]=an1[i]-10;
                       an1[i+1]=an1[i+1]+1;
          }
          if(an1[i])
            Highestpos=i;
   }
   for(i=Highestpos;i>=0;i--)
   cout<<an1[i];
   return 0;
}


char s1[200],s2[200];
int a[200],b[200],c[200];
int alen,blen,clen;

int str2bigint(char*str,int*t)
{
	int len=(int)strlen(str);
	int i;
	for(i=0;i<len;i++)
		t[i]=str[len-i-1]-'0';
	return len;
}

void print_int(int*a)
{
	int k=199;
	int i;
	while(a[k]==0&&k>0)
		k=k-1;
    for(i=k;i>=0;i--)
		printf("%d",a[i]);
}

int add_bigint(int*a,int alen,int*b,int blen,int*c)
{
	int i;
	int temp = 0;
	int tmpsum = 0;
	int len=(alen>blen)?alen:blen;
	for(i=0;i<len;i++)
	{
		tmpsum = a[i] + b[i] + temp;
		c[i] = tmpsum % 10;
		temp = tmpsum /10;
	}
	if( temp != 0)
	{
		c[len] = temp;
		return len+1;
	}
	else
		return len;
}

int main(int argc, char*argv[])
{
	//int N,i;

	//scanf("%d",&N);
   // for(i=1;i<=N;i++)
	//{
		scanf("%s%s",s1,s2);

		alen=str2bigint(s1,a);

		blen=str2bigint(s2,b);

		clen=add_bigint(a,alen,b,blen,c);
		print_int(c);
//}
		return 0;
}


int length(char* v);
void diandao(char* v,int i);
int main()
{
	int x=0;
	char a[250],b[250],c[250];
	cin.getline(a,250);
	cin.getline(b,250);
	diandao(a,length(a));
	diandao(b,length(b));
	x=length(a);
	if(x<length(b))x=length(b);
	for(int i=0;i<x;i++)
		c[i]='0';
	for(int i=0;i<x;i++)
	{
		if(a[i]<'0'||a[i]>'9') a[i]='0';
		if(b[i]<'0'||b[i]>'9') b[i]='0';
		if(a[i]-'0'+b[i]-'0'+c[i]-'0'<=9)	c[i]+= -'0'+a[i]-'0'+b[i];
		else	{c[i]=c[i]-'0'+a[i]-'0'+b[i]-10; c[i+1]='1';}
	}
	diandao(c,length(c));
	int k=0;
	for(int i=0;i<length(c);i++)
	{	if(c[i]!='0'){k=i;break;}}
	for(int i=k;i<length(c);i++)
		cout<<c[i];
	return 0;
}
int length(char* v)
{
	int x;
	for(int i=1;v[i-1]>='0'&&v[i-1]<='9';i++)
		x=i;
	return x;
}
void diandao(char* v,int i)
{
	for(int j=0;j<i/2;j++)
		swap(v[j],v[i-j-1]);
}


int main()
{
	int na[MAX_LEN+10];
	int nb[MAX_LEN+10];
	char a[MAX_LEN+10];
	char b[MAX_LEN+10];
    scanf("%s", a);
    scanf("%s", b);
    int i, j;
    memset( na, 0, sizeof(na));
    memset( nb, 0, sizeof(nb));

	int n1 = strlen(a);
    j = 0;
    for( i=n1-1;i>=0;i--)
        na[j++] = a[i] - '0';

    int n2 = strlen(b);
    j = 0;
    for( i=n2-1;i>=0;i--)
        nb[j++] = b[i] - '0';

     for(i=0;i<MAX_LEN;i++)
     {
         na[i] += nb[i];
         if(na[i]>=10)
         {
                na[i] -= 10;
                na[i+1] ++;
         }
     }
     int flag = 0;
     for( i = MAX_LEN; i >= 0; i-- )
     {
         if( flag==1)
             printf("%d", na[i]);
          else if( na[i] ) {
               printf("%d", na[i]);
               flag = 1;
          }
     }
     if(flag!=1)
          printf("0");
     return 0;
}


// 10000.cpp : ??????????????
//

//#include<StdAfx.h>
struct node
{
    char data;
    struct node *next;
};
int l[2]={0,0},k=0,n;
typedef struct node Node;
Node *create()
{
    Node *p1,*p2,*head;
    head=null;
    p1=(Node *)malloc(len);
    p2=(Node *)malloc(len);
    scanf("%c",&p1->data);
    head=null;
    while(p1->data!='\n')
    {
        l[k]++;
        if (l[k]==1)
        head=p1;
        else
        p2->next=p1;
        p2=p1;
        p1=(Node *)malloc(len);
        scanf("%c",&p1->data);
    }
    k++;
    p2->next=null;
    return (head);
}
Node *add(Node *s1,Node *s2)
{
    Node *p1,*p2,*ans,*p,*pp;
    ans=null;
    p1=s1;
    p2=s2;
    int i,j,a,b,c=0,d;
    n=l[0]>l[1]?l[0]:l[1];
	p=(Node *)malloc(len);
    for(i=0;i<n;i++)
    {
        for (j=0;j<l[0]-i-1;j++)
        p1=p1->next;
        for (j=0;j<l[1]-i-1;j++)
        p2=p2->next;
        a=i>=l[0]?0:p1->data-'0';
        b=i>=l[1]?0:p2->data-'0';
        d=(a+b+c)%10;
        c=(a+b+c)/10;
        p->data=d+'0';
        if (i==0)
        ans=p;
        else
        pp->next=p;
        pp=p;
        p=(Node *)malloc(len);
        p1=s1;
        p2=s2;
    }
    if (c==1)
    {
         p->data='1';
         pp->next=p;
         pp=p;
         n++;
    }
    pp->next=null;
    return (ans);
}
void put(Node *head)
{
    Node *p;
    p=head;
    int i,flag=0;
    for (;n!=0;)
    {
        for (i=0;i<n-1;i++)
        p=p->next;
        if (flag==0&&p->data=='0')
        {
             p=head;
             n--;
            continue;
        }
        //if (flag==1)
       // {
            printf ("%c",p->data);
            flag=1;
        //}

        p=head;
        n--;
    }
    if (flag==0)
    printf("0");
}
 main()
{
    Node *s1,*s2,*ans;
    s1=create();
    s2=create();
    ans=add(s1,s2);
    put(ans);
}


/*
 * 3.cpp
 *
 *  Created on: 2013-11-22
 *      Author: Administrator
 */

/*#include<iostream>
void change(char a[300])//??????????
{
	int q;
	for(int i=0;i<strlen(a)/2;i++)
	{
		if(strlen(a)-i-1==i)break;
		else{
			q=a[i];
		a[i]=a[strlen(a)-i-1];
		a[strlen(a)-i-1]=q;
		}
	}
}
int max1(char c[300],char b[300])//????????
{
	if(strlen(c)>strlen(b))return strlen(c);
	else return strlen(b);
}

int add(char c[300],char d[300],int x,char s[300])//???????????
{
	if(c[x]-'0'+d[x]-'0'<10)
	{
		s[x]=c[x]-'0'+d[x]-'0';
		if(x==max1(c,d)-1)return 0; //??????????
	}
	else
	{
		s[x]=c[x]-'0'+d[x]-'0'-10;//????????
		c[x+1]++;
		if(x==max1(c,d))return 0;
	}
	return add(c,d,x+1,s);
}
void happy(int s[300])
{
	for(int i=0;i<300;i++)
	{
		s[i]='0';
	}
}
int main()
{
	char a[300]={'0'};
	char b[300]={'0'};
	char c[300]={'0'};
	happy(a);
	happy(b);
	happy(c);
	cin>>a>>b;
	change(a);
	change(b);
	add(a,b,0,c);
	if(c[max1(a,b)]!='0')cout<<'1';//??????
	for(int i=max1(a,b)-1;i>=0;i--)//?c????
		{
			cout<<char(c[i]+'0');
		}
}*/
/*#include<iostream>
int lenA,lenB,maxlen;
void change(char a[300],int len)
{
	char q;
	for(int i=0;i<len/2;i++)
	{
		if(len-i-1==i)break;
		else{
			q=a[i];
			a[i]=a[len-i-1];
			a[len-i-1]=q;
		}
	}

}
int add(char c[300],char d[300],int x,char s[300])
{
	if(c[x]-'0'+d[x]-'0'<10)
	{
		s[x]=c[x]+d[x]-'0';
		if(x>maxlen)return 0;

	}
	else{
		s[x]=c[x]-'0'+d[x]-10;
		c[x+1]++;
		if(x>=maxlen-1)
		{
			s[x+1]++;
		maxlen++;
		return 0;
		}
	}
	return add(c,d,x+1,s);
}
void happy(char s[300])
{
	for(int i=0;i<300;i++)
	{
		s[i]='0';
	}
}
int main()
{
	char a[300]={'0'};
	char b[300]={'0'};
	char c[300]={'0'};

happy(a);
happy(b);
happy(c);
cin>>a>>b;
lenA=strlen(a);
lenB=strlen(b);
maxlen=lenA>lenB?lenA:lenB;
cout<<maxlen<<endl;
a[lenA]=b[lenB]='0';
change(a,lenA);
change(b,lenB);
add(a,b,0,c);
for(int i=maxlen-1;i>=0;i--)
{
	cout<<c[i];
}
 return 0;
}
?????*/

int lenA, lenB, maxLen;
void change(char a[300], int len)//??????????
{
	int q;
	for(int i=0;i<len/2;i++)
	{
		if(len-i-1==i)break;
		else{
			q=a[i];
		a[i]=a[len-i-1];
		a[len-i-1]=q;

		}
	}
}

int add(char c[300],char d[300],int x,char s[300])//???????????
{
	if(c[x]-'0'+d[x]-'0'<10)
	{
		s[x]=c[x]-'0'+d[x];
		if(x>=maxLen-1)return 0; //??????????
	}
	else
	{
		s[x]=c[x]-'0'+d[x]-10;//????????
		c[x+1]++;
		if(x>=maxLen-1)
		{
			s[x+1]++;
			maxLen++;
			return 0;
		}
	}
	return add(c,d,x+1,s);
}
int main()
{
	char a[300];
	char b[300];
	char c[300];
	int i, j;
	for (i = 0; i < 300; i++)
		a[i] = b[i] = c[i] = '0';
	cin>>a>>b;
	for (i = 0; a[i] != '\0' && a[i] == '0'; i++);
	lenA = strlen(a);
	for (j = 0; j < lenA - i; j++)
		a[j] = a[j + i];
	lenA -= i;
	for (i = 0; b[i] != '\0' && b[i] == '0'; i++);
	lenB = strlen(b);
	for (j = 0; j < lenB - i; j++)
		b[j] = b[j + i];
	lenB -= i;
	if (lenA == 0 && lenB == 0)
		cout << '0';
	else if (lenA == 0)
		cout << b;
	else if (lenB == 0)
		cout << a;
	else
	{
		maxLen = lenA > lenB ? lenA : lenB;
		a[lenA] = b[lenB] = '0';
		change(a, lenA);
		change(b, lenB);
		add(a,b,0,c);
		for(i=maxLen-1;i>=0;i--)//?c????
			{
				//if (i != 0)
				//	continue;
				cout<<c[i];
			}
	}
}