//本地通过(100pts)
#include<bits/stdc++.h>
using namespace std;
int main(){
/*高精度加法*/
char a[500],b[500];
cin>>a>>b;
int a1[500]={0},b1[500]={0},c[500];
int la=strlen(a);
int lb=strlen(b);
for(int i=0;i<la;i++){
a1[la-i]=a[i]-48;
}for(int i=0;i<lb;i++){
b1[lb-i]=b[i]-48;
}int x=0;
for(int i=1;i<=max(la,lb);i++){
c[i]=b1[i]+a1[i]+x;
x=c[i]/10;
c[i]%=10;
}if(x==1){
cout<<x;
for(int i=max(la,lb);i>=1;i--){
cout<<c[i];
}
}else{
bool find=false;
for(int i=max(la,lb);i>=1;i--){
if(c[i]%10!=0){
find=true;
}if(find==true){
cout<<c[i];
}
}
}/*高精度减法*/
char a[500],b[500];
cin>>a>>b;
int a1[500]={0},b1[500]={0},c[500]={0};
int la=strlen(a);
int lb=strlen(b);
if(strcmp(a1,b1)==0){
cout<<0;
return 0;
}
for(int i=0;i<la;i++){
a1[la-i]=a[i]-48;
}for(int i=0;i<lb;i++){
b1[lb-i]=b[i]-48;
}int x=0;
for(int i=1;i<=max(la,lb);i++){
if(a1[i]<b1[i]){
a1[i+1]--;
a1[i]=a1[i]+10;
}c[i]=a1[i]-b1[i];
}
bool find=false;
for(int i=max(la,lb);i>=1;i--){
if(c[i]%10!=0){
find=true;
}if(find==true){
cout<<c[i];
}
}/*高精度乘法*/
char a[1487]={2},b[14285]={1};
int a1[1487]={0},b1[14285]={0},c[53341]={0},n;
cin>>n;
int la=strlen(a);
int lb=strlen(b);
if((la==1&&a[0]=='0')||(lb==1&&b[0]=='0')){
cout<<0;
return 0;
}
for(int i=0;i<la;i++){
a1[la-i]=a[i]-48;
}for(int i=0;i<lb;i++){
b1[lb-i]=b[i]-48;
}int x=0;
for(int i=1;i<=la;i++){
for(int j=1;j<=lb;j++){
int r=a1[i]*b1[j];
x=r/10;
r%=10;
c[i+j]+=r;
c[i+j+1]+=(x+c[i+j]/10);
c[i+j]%=10;
}
}bool find=false;
for(int i=la+lb+1;i>=2;i--){
if(c[i]%10!=0){
find=true;
}if(find==true){
cout<<c[i];
}
}
return 0;
}