#include <bits/stdc++.h>
using namespace std;
char a[1000005],b[1000005],c[1000005];
string s1,s2;
string add(string s1,string s2)
{
memset(c,0,sizeof(c));
memset(a,0,sizeof(c));
memset(b,0,sizeof(c));
int l1=s1.size(),l2=s2.size();
for(int i=1;i<=s1.size();i++) a[l1-i+1]=s1[i-1]-'0';
for(int i=1;i<=s2.size();i++) b[l2-i+1]=s2[i-1]-'0';
int l=max(l1,l2)+1;
for(int i=1;i<=l;i++)
{
c[i]+=a[i]+b[i];
c[i+1]+=c[i]/10;
c[i]%=10;
}
string ans="";
if(c[l]==0&&l>1) l--;
for(int i=l;i>=1;i--) ans+=char(c[i]+'0');
return ans;
}
string pev(string s1,string s2)
{
memset(a,0,sizeof(c));
memset(b,0,sizeof(c));
memset(c,0,sizeof(c));
int l1=s1.size(),l2=s2.size();
for(int i=1;i<=s1.size();i++) a[l1-i+1]=s1[i-1]-'0';
for(int i=1;i<=s2.size();i++) b[l2-i+1]=s2[i-1]-'0';
int l=max(l1,l2)+1;
bool flag=(l1>l2) ? 1 : ((l1==l2) ? (s1>=s2) : 0);
for(int i=1;i<=l;i++)
{
if(flag)c[i]+=a[i]-b[i];
else c[i]+=b[i]-a[i];
c[i+1]-=(c[i]<0);
c[i]=(c[i]+10)%10;
}
if(c[l]==0&&l>1) l--;
string ans="";
if(!flag) ans+='-';
while(c[l]==0&&l>1) l--;
for(int i=l;i>=1;i--) ans+=char(c[i]+'0');
return ans;
}
string sat(string s1,string s2)
{
memset(a,0,sizeof(c));
memset(b,0,sizeof(c));
memset(c,0,sizeof(c));
int l1=s1.size(),l2=s2.size();
for(int i=1;i<=s1.size();i++) a[l1-i+1]=s1[i-1]-'0';
for(int i=1;i<=s2.size();i++) b[l2-i+1]=s2[i-1]-'0';
int l=l1+l2;
for(int i=1;i<=l1;i++)
{
for(int j=1;j<=l2;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
while(c[l]==0&&l>1) l--;
string ans="";
for(int i=l;i>=1;i--) ans+=char(c[i]+'0');
return ans;
}
bool f(string s1,string s2)
{
int l1=s1.size(),l2=s2.size();
return (l1>l2) ? 1 : ((l1==l2) ? (s1>s2) : 0);
}
struct node
{
string root,fish;
node(){};
node(string root,string fish)
{
this->fish=fish;
this->root=root;
}
void print()
{
cout<<root<<endl<<fish;
}
};
node off(string s1,string s2)
{
string answer="";
int l=s1.size();
string x="0";
for(int d=1;d<=l;d++)
{
if(x!="0")x+=s1[d-1];
else x=s1[d-1];
int i=0;
for(;i<=9;i++) if(f(sat(s2,to_string(i)) ,x)) break;
i--;
if(!answer.empty()||i!=0)answer+=to_string(i);
x=pev(x,sat(s2,to_string(i)));
}
if(answer=="") answer="0";
node _out(answer,x);
return _out;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>s1>>s2;
cout<<add(s1,s2)<<endl<<pev(s1,s2)<<endl<<sat(s1,s2)<<endl;
off(s1,s2).print();
return 0;
}
TLE