#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[10010],b[10010],c[10010],d[10010];
int la,lb;
bool check(int p[],int k[],int last,int len){
if(p[last+len]) return 1;
for(int i=len-1;i>=0;i--){
if(p[i+last]>k[i]) return 1;
if(p[i+last]<k[i]) return 0;
}
return 1;
}
void print(int a[]){
int w=10000;
for(;!a[w]&&w>0;w--);
for(;w>=0;w--) cout<<a[w];
cout<<"\n";
}
void add(string s,string t){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
la=s.size(),lb=t.size();
for(int i=0;i<la;i++){
a[i]=s[la-i-1]-'0';
}
for(int i=0;i<lb;i++){
b[i]=t[lb-i-1]-'0';
}
for(int i=0;i<max(la,lb);i++){
c[i]+=a[i]+b[i];
c[i+1]+=c[i]/10;
c[i]%=10;
}
print(c);
}
void sub(string s,string t){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
la=s.size(),lb=t.size();
for(int i=0;i<la;i++){
a[i]=s[la-i-1]-'0';
}
for(int i=0;i<lb;i++){
b[i]=t[lb-i-1]-'0';
}
for(int i=0;i<max(la,lb);i++){
c[i]+=a[i]-b[i];
if(c[i]<0){
c[i+1]--;
c[i]+=10;
}
}
print(c);
}
void mul(string s,string t){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
la=s.size(),lb=t.size();
for(int i=0;i<la;i++){
a[i]=s[la-i-1]-'0';
}
for(int i=0;i<lb;i++){
b[i]=t[lb-i-1]-'0';
}
for(int i=0;i<la;i++){
for(int j=0;j<lb;j++){
c[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<la+lb;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
print(c);
}
void div(string s,string t){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
la=s.size(),lb=t.size();
for(int i=0;i<la;i++){
a[i]=s[la-i-1]-'0';
}
for(int i=0;i<lb;i++){
b[i]=t[lb-i-1]-'0';
}
for(int i=0;i<la;i++) d[i]=a[i];
for(int i=la-lb;i>=0;i--){
// bool flag=true;
while(check(d,b,i,lb)){
for(int j=0;j<lb;j++){
d[i+j]-=b[j];
if(d[i+j]<0){
// if(d[i+j+1]<=0){
// flag=false;
// break;
// }
d[i+j+1]--;
d[i+j]+=10;
}
}
c[i]++;
}
}
print(c);
print(d);
}
signed main(){
string s,t;
cin>>s>>t;
add(s,t);
if(s<t){
cout<<"-";
sub(t,s);
}
else sub(s,t);
mul(s,t);
div(s,t);
return 0;
}