#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
//整数加法
void add(string &a,string &b){
if(a.size()<b.size()){
add(b,a);
return ;
}
vector<int> m,n,s;
for(int i=a.size()-1;i>=0;i--){
m.push_back(a[i]-'0');
}
for(int i=b.size()-1;i>=0;i--){
n.push_back(b[i]-'0');
}
int t=0;
for(int i=0;i<m.size();i++){
t+=m[i];
if(i<n.size()){
t+=n[i];
}
s.push_back(t%10);
t/=10;
}
if(t){
s.push_back(t);
}
for(int i=s.size()-1;i>=0;i--){
cout<<s[i];
}
cout<<endl;
return ;
}
//整数减法
void sub(string &a,string &b){
if(a.size()<b.size()||(a.size()==b.size()&&a<b)){
cout<<"-";
sub(b,a);
return ;
}
vector<int> m,n,s;
for(int i=a.size()-1;i>=0;i--){
m.push_back(a[i]-'0');
}
while(m.back()==0&&m.size()>1){
m.pop_back();
}
for(int i=b.size()-1;i>=0;i--){
n.push_back(b[i]-'0');
}
while(n.back()==0&&n.size()>1){
n.pop_back();
}
int t=0;
for(int i=0;i<m.size();i++){
t=m[i];
if(i<n.size()){
t-=n[i];
}
if(t<0){
m[i+1]--;
t+=10;
}
s.push_back(t);
}
while(s.back()==0&&s.size()>1){
s.pop_back();
}
for(int i=s.size()-1;i>=0;i--){
cout<<s[i];
}
cout<<endl;
return ;
}
//整数乘法
void mul(string &a,string &b){
vector<int> m,n;
for(int i=a.size()-1;i>=0;i--){
m.push_back(a[i]-'0');
}
for(int i=b.size()-1;i>=0;i--){
n.push_back(b[i]-'0');
}
//初始空间为m.size()+n.size() 初始值是0
vector<int> s(m.size()+n.size(),0);
for(int i=0;i<m.size();i++){
for(int j=0;j<n.size();j++){
s[i+j] += m[i]*n[j];
}
}
int t=0;
for(int i=0;i<s.size();i++){
t+=s[i];
s[i]=t%10;
t/=10;
}
while(s.back()==0){
s.pop_back();
}
for(int i=s.size()-1;i>=0;i--){
cout<<s[i];
}
cout<<endl;
return ;
}
//整数除法:大数除大数
void div_big(string &a,string &b){
}
//整数除法:大数除小数
void div_small(string &a,string &b){
}
int main(){
string a,b;
cin>>a>>b;
add(a,b);
sub(a,b);
mul(a,b);
return 0;
}