#include<bits/stdc++.h>
using namespace std;
struct bigint{
int len;
short num[100100];
};
string sa,sb;
bigint a,b,tot;
void print(bigint x){
for(int i=x.len;i>0;i--){
cout<<x.num[i];
}
cout<<'\n';
return;
}
bool over(bigint x,bigint y){
cout<<1123456789<<'\n';
if(x.len>y.len)return 1;
if(x.len<y.len)return 0;
for(int i=x.len;i>=1;i--){
if(x.num[i]>y.num[i])return 1;
if(x.num[i]<y.num[i])return 0;
}
return 0;
}
bigint add(bigint x,bigint y){
bigint ans;
memset(ans.num,0,sizeof(ans.num));
ans.len=max(x.len,y.len);
for(int i=1;i<=ans.len;i++){
ans.num[i]+=x.num[i]+y.num[i];
if(ans.num[i]>=10){
ans.num[i+1]+=ans.num[i]/10;
ans.num[i]%=10;
}
}
if(ans.num[ans.len+1])ans.len++;
return ans;
}
bigint cross(bigint x,bigint y){
bigint ans;
memset(ans.num,0,sizeof(ans.num));
ans.len=x.len+y.len-1;
for(int i=1;i<=x.len;i++){
for(int j=1;j<=y.len;j++){
ans.num[i+j-1]+=x.num[i]*y.num[j];
if(ans.num[i+j-1]>=10){
ans.num[i+j]+=ans.num[i+j-1]/10;
ans.num[i+j-1]%=10;
}
}
}
if(ans.num[x.len+y.len])ans.len++;
return ans;
}
bigint sub(bigint x,bigint y){
bigint ans,xx=x,yy=y;
memset(ans.num,0,sizeof(ans.num));
if(over(yy,xx)){
cout<<"-";
swap(xx,yy);
}
for(int i=1;i<=x.len;i++){
ans.num[i]=xx.num[i]-yy.num[i];
}
for(int i=1;i<=x.len;i++){
if(ans.num[i]<0){
ans.num[i]+=10;
ans.num[i+1]-=1;
}
}
ans.len=xx.len;
while(ans.num[ans.len]==0&&ans.len>1)ans.len--;
return ans;
}
bigint half(bigint x){
bigint ans=x;
ans.len=x.len;
if(x.num[x.len]<2)ans.len--;
for(int i=x.len;i>1;i--){
ans.num[i-1]+=ans.num[i]%2*10;
ans.num[i]/=2;
}
ans.num[1]/=2;
return ans;
}
bigint mod(bigint x,bigint y){
cout<<11111;
bigint l,r=x,t,ans;
l.len=1;l.num[1]=0;
t.len=1;t.num[1]=1;
while(over(r,l)){
bigint mid=half(add(l,r));
if(!over(cross(mid,y),x)){
ans=mid;
l=add(mid,t);
}else{
r=sub(mid,t);
}
}
return ans;
}
int main(){
cin>>sa>>sb;
a.len=sa.size();
for(int i=a.len-1,j=1;i>=0;i--,j++){
a.num[j]=sa[i]-'0';
}
b.len=sb.size();
for(int i=b.len-1,j=1;i>=0;i--,j++){
b.num[j]=sb[i]-'0';
}
print(add(a,b));
print(sub(a,b));
print(cross(a,b));
tot=mod(a,b);
print(tot);
print(sub(a,cross(b,tot)));
return 0;
}