#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int> exchange(string s){
    vector<int> A;
    int len=s.size();
    for(int i=len-1;i>=0;i--){
        A.push_back(s[i]-'0');
    }
    return A;
}

vector<int> add(vector<int> &A,vector<int> &B){
    vector<int> C;
    if(A.size()>B.size()){
        return add(B,A);
    }
    int len1=A.size();
    int len2=B.size();
    int tmp=0;
    for(int i=0;i<len1;i++){
        int a=A[i];
        int b=B[i];
        int t=tmp;
        tmp=(a+b+t)/10;
        int sum=(a+b+t)%10;
        C.push_back(sum);
    }
    for(int i=len1;i<len2;i++){
        int b=B[i];
        int t=tmp;
        tmp=(b+t)/10;
        int sum=(b+t)%10;
        C.push_back(sum);
    }
    while(tmp){
        C.push_back(tmp%10);
        tmp/=10;
    }
    return C;
}

bool cmp(vector<int> &A,vector<int> &B){//A>B
    if(A.size()!=B.size()) return A.size()>B.size();
    for(int i=A.size()-1;i>=0;i--){
        if(A[i]!=B[i]){
            return A[i]>B[i];
        }
    }
    return true;
}
vector<int> sub(vector<int> &A,vector<int> &B){
    vector<int> C;
    int t=0;
    for(int i=0;i<A.size();i++){
        t=A[i]-t;
        if(i<B.size()) t-=B[i];
        C.push_back((t+10)%10);
        if(t<0) t=1;
        else t=0;
    }
    while(C.size()>1&&C.back()==0) C.pop_back();
    return C;
}

vector<int> mul(vector<int> &A,vector<int> &B){
    vector<int> C(A.size()+B.size());
    for(int i=0;i<A.size();i++){
        for(int j=0;j<B.size();j++){
            C[i+j]+=A[i]*B[j];
            C[i+j+1]+=C[i+j]/10;
            C[i+j]%=10;
        }
    }
    while(C.size()>1&&C.back()==0) C.pop_back();
    return C;
}
vector<int> C5;

vector<int> copy(vector<int> &A,int m){//把A复制到B上
    vector<int> B(A.size()+m,0);
    for(int i=0;i<A.size();i++){
        B[i+m]=A[i];
    }
    return B;
}
vector<int> div(vector<int> &AA,vector<int> &B){
    vector<int> A=AA;
    vector<int> C(10000,0);
    
    for(int i=A.size()-1;i>=0;i--){
        vector<int> tmp=copy(B,i);
        while(cmp(A,tmp)){
            C[i]++;
            A=sub(A,tmp);
        }
    }
    while(C.size()>1&&C.back()==0) C.pop_back();
    C5=A;
    return C;
}

vector<int> mod1(vector<int> &A,vector<int> &B){
    vector<int> C;
    while(cmp(A,B)){
        A=sub(A,B);
    }
    return A;
}

void print(vector<int> &A){
    for(int i=0;i<A.size();i++){
        cout<<A[i];
    }
}
signed main(){
    string a,b;
    cin>>a>>b;
    vector<int> A=exchange(a);
    vector<int> B=exchange(b);
    vector<int> C1;
    C1=add(A,B);
    for(int i=C1.size()-1;i>=0;i--){
        cout<<C1[i];
    }
    cout<<endl;
    vector<int> C2;
    if(cmp(A,B)){
        C2=sub(A,B);
    }
    else{
        cout<<"-";
        C2=sub(B,A);
    }
    // C2=sub(A,B);
    for(int i=C2.size()-1;i>=0;i--){
        cout<<C2[i];
    }
    cout<<endl;
    vector<int> C3;
    C3=mul(A,B);
    for(int i=C3.size()-1;i>=0;i--){
        cout<<C3[i];
    }
    cout<<endl;
    vector<int> C4;
    C4=div(A,B);
    for(int i=C4.size()-1;i>=0;i--){
        cout<<C4[i];
    }
    cout<<endl;
    for(int i=C5.size()-1;i>=0;i--){
        cout<<C5[i];
    }
    cout<<endl;
    
    return 0;
}