#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
vector<int>s2v(string str){
vector<int>r;
r.clear();
for(char c:str)
r.push_back(c-'0');
return r;
}
string v2s(vector<int>v){
string str;
str.clear();
for(int i:v)
str.push_back(i+'0');
return str;
}
template<typename t>
void reverse(vector<t>&v){
reverse(v.begin(),v.end());
}
vector<int>df0(vector<int>t){
reverse(t);
while(t.back()==0)
t.pop_back();
reverse(t);
if(t.empty())
return vector<int>{0};
return t;
}
template<typename t>
ostream&operator<<(ostream&os,vector<t>v){
if(v.size()==0)
os<<"[]";
else{
os<<"[";
bool b=1;
for(t i:v){
if(b)
b=0;
else
cout<<",";
os<<i;
}
os<<"]";
}
}
vector<int>flat(vector<int>&v){
reverse(v);
for(int i=0;i<v.size();i++){
if(v[i]>=10){
if(i==v.size()-1)
v.push_back(v[i]/10);
else
v[i+1]+=v[i]/10;
v[i]%=10;
}
if(v[i]<0){
v[i+1]--;
v[i]+=10;
}
}
reverse(v);
return v;
}
vector<int>operator+(vector<int>v,vector<int>vv){
reverse(v.begin(),v.end());
reverse(vv.begin(),vv.end());
for(int i=0;i<v.size();i++){
if(i>=vv.size())
vv.push_back(0);
vv[i]+=v[i];
}
reverse(vv.begin(),vv.end());
return flat(vv);
}
vector<int>operator*(vector<int>v,int a){
for(int&i:v)
i*=a;
return flat(v);
}
vector<int>mul10(vector<int>v,int a=1){
if(v==vector<int>{0})
return v;
for(int i=1;i<=a;i++)
v.push_back(0);
return v;
}
vector<int>operator*(vector<int>v,vector<int>vv){
vector<int>ans;
ans.clear();
for(int i=vv.size()-1;i>=0;i--){
ans=ans+mul10(v*vv[i],vv.size()-1-i);
}
return ans;
}
bool operator==(vector<int>v,vector<int>vv){
if(v.size()==vv.size()){
for(int i=0;i<v.size();i++)
if(v[i]!=vv[i])
return false;
return true;
}
return false;
}
bool operator>(vector<int>v,vector<int>vv){
if(v.size()>vv.size())
return true;
if(v.size()<vv.size())
return false;
for(int i=0;i<v.size();i++){
if(v[i]>vv[i])
return true;
if(v[i]<vv[i])
return false;
}
return false;
}
bool operator<(vector<int>v,vector<int>vv){
if(v.size()<vv.size())
return true;
if(v.size()>vv.size())
return false;
for(int i=0;i<v.size();i++){
if(v[i]<vv[i])
return true;
if(v[i]>vv[i])
return false;
}
return false;
}
bool operator!=(vector<int>v,vector<int>vv){
if(v.size()==vv.size()){
for(int i=0;i<v.size();i++)
if(v[i]!=vv[i])
return true;
return false;
}
return true;
}
bool operator>=(vector<int>v,vector<int>vv){
if(v.size()>vv.size())
return true;
if(v.size()<vv.size())
return false;
for(int i=0;i<v.size();i++){
if(v[i]>vv[i])
return true;
if(v[i]<vv[i])
return false;
}
return true;
}
bool operator<=(vector<int>v,vector<int>vv){
if(v.size()<vv.size())
return true;
if(v.size()>vv.size())
return false;
for(int i=0;i<v.size();i++){
if(v[i]<vv[i])
return true;
if(v[i]>vv[i])
return false;
}
return true;
}
vector<int>operator-(vector<int>v,vector<int>vv){
if(vv>v)
swap(v,vv);
reverse(v);
reverse(vv);
for(int i=0;i<vv.size();i++){
if(v[i]<vv[i]){
v[i+1]--;
v[i]+=10;
}
v[i]-=vv[i];
}
reverse(v);
return df0(flat(v));
}
vector<int>operator/(vector<int>v,vector<int>vv){
vector<int>ans;
ans.clear();
vector<int>t;
t.clear();
for(int i:v){
int tt=0;
t.push_back(i);
while(t>=vv){
tt++;
t=t-vv;
}
ans.push_back(tt);
}
return df0(ans);
}
vector<int>operator%(vector<int>v,vector<int>vv){
vector<int>ans;
ans.clear();
vector<int>t;
t.clear();
for(int i:v){
int tt=0;
t.push_back(i);
while(t>=vv){
tt++;
t=t-vv;
}
ans.push_back(tt);
}
return t;
}
int main(){
string s,ss;
cin>>s>>ss;
cout<<v2s(s2v(s)+s2v(ss))<<"\n"<<(s2v(s)<s2v(ss)?"-":"")<<v2s(s2v(s)-s2v(ss))<<"\n"<<v2s(s2v(s)*s2v(ss))<<"\n"<<v2s(s2v(s)/s2v(ss))<<"\n"<<v2s(s2v(s)%s2v(ss));
return 0;
}