#include<bits/stdc++.h>
#define deb(x) cerr<<#x<<" = "<<(x)<<'\n';
using namespace std;
typedef long long ll;//大整数
struct BigInteger
{static const int BASE = 100000000;//和WIDTH保持一致static const int WIDTH = 8;//八位一存储,如修改记得修改输出中的%08dbool sign;//符号, 0表示负数size_t length;vector<int> num;//反序存
//构造函数BigInteger (long long x = 0) { *this = x; }BigInteger (const string& x) { *this = x; }BigInteger (const BigInteger& x) { *this = x; }
//剪掉前导0void cutLeadingZero(){while(num.back() == 0 && num.size() != 1) { num.pop_back(); }}
//设置数的长度void setLength(){cutLeadingZero();int tmp = num.back();if(tmp == 0) { length = 1; }else{length = (num.size() - 1) * WIDTH;while(tmp > 0) { ++length; tmp /= 10; }}}
//赋值运算符BigInteger& operator = (long long x){num.clear();if (x >= 0) sign = true;else { sign = false; x = -x; }do{num.push_back(x%BASE);x/=BASE;} while(x>0);setLength();return *this;}
//赋值运算符BigInteger& operator = (const string& str){num.clear();sign = (str[0] != '-');//设置符号int x, len=(str.size()-1-(!sign))/WIDTH+1;for(int i=0;i<len;i++){int End=str.length()-i*WIDTH;int start=max((int)(!sign), End-WIDTH);//防止越界sscanf(str.substr(start,End-start).c_str(),"%d",&x);num.push_back(x);}setLength();return *this;}
//赋值运算符BigInteger& operator = (const BigInteger& tmp){num = tmp.num;sign = tmp.sign;length = tmp.length;return *this;}
//将该大数变为一个字符串 string tostring(){string ans = "";for (int i = 0; i < num.size(); i++)ans.insert(0, to_string(num[i]));if (!sign) ans.insert(0, "-");//负数 return ans;}
//数的位数size_t size() const { return length; }
//*10^n 除法中用到BigInteger e(size_t n) const{int tmp = n % WIDTH;BigInteger ans;ans.length = n + 1;n /= WIDTH;while (ans.num.size() <= n) ans.num.push_back(0);ans.num[n] = 1;while (tmp--) ans.num[n] *= 10;return ans*(*this);}
//绝对值BigInteger abs() const{BigInteger ans(*this);ans.sign = true;return ans;}
//正号const BigInteger& operator + () const { return *this; }
// + 运算符BigInteger operator + (const BigInteger& b) const{if (!b.sign) { return *this - (-b); }if (!sign) { return b - (-*this); }BigInteger ans;ans.num.clear();for(int i=0,g=0;;i++){if(g==0&&i>=num.size()&&i>=b.num.size()) break;int x=g;if(i<num.size()) x+=num[i];if(i<b.num.size()) x+=b.num[i];ans.num.push_back(x%BASE);g=x/BASE;}ans.setLength();return ans;}
//负号BigInteger operator - () const{BigInteger ans(*this);if (ans != 0) ans.sign = !ans.sign;return ans;}
// - 运算符BigInteger operator - (const BigInteger& b) const{if (!b.sign) { return *this + (-b); }if (!sign) { return -((-*this) + b); }if (*this < b) { return -(b - *this); }BigInteger ans;ans.num.clear();for(int i=0,g=0;;i++){if(g==0&&i>=num.size()&&i>=b.num.size()) break;int x=g; g=0;if(i<num.size()) x+=num[i];if(i<b.num.size()) x-=b.num[i];if(x<0){x+=BASE;g=-1;}ans.num.push_back(x);}ans.setLength();return ans;}
// * 运算符BigInteger operator * (const BigInteger& b) const{int lena = num.size(), lenb = b.num.size();vector<long long> ansLL;for (int i = 0; i < lena+lenb; i++) ansLL.push_back(0);for (int i = 0; i < lena; i++){for (int j = 0; j < lenb; j++){ansLL[i+j] += (long long)num[i]*(long long)b.num[j];}}while (ansLL.back() == 0 && ansLL.size() != 1) ansLL.pop_back();int len = ansLL.size();long long g = 0, tmp;BigInteger ans;ans.sign = (ansLL.size() == 1 && ansLL[0] == 0) || (sign == b.sign);ans.num.clear();for (int i = 0; i < len; i++){tmp = ansLL[i];ans.num.push_back((tmp + g)%BASE);g = (tmp + g) / BASE;}if (g > 0) ans.num.push_back(g);ans.setLength();return ans;}
// / 运算符 (大数除小数)BigInteger operator / (const long long& b) const{BigInteger c;c.num.clear();for(int i=0;i<num.size();i++){c.num.push_back(0);}long long g=0;for(int i=num.size()-1;i>=0;i--){c.num[i]=(num[i]+g*BASE)/b;g=num[i]+g*BASE-c.num[i]*b;}for(int i=num.size()-1;c.num[i]==0;i--){c.num.pop_back();}return c;}
// /运算符 (大数除大数)BigInteger operator / (const BigInteger& b) const{BigInteger aa((*this).abs());BigInteger bb(b.abs());if (aa < bb) return 0;char *str = new char[aa.size() + 1];memset(str, 0, sizeof(char)*(aa.size()+1));BigInteger tmp;int lena = aa.length, lenb = bb.length;for (int i = 0; i <= lena - lenb; i++){tmp = bb.e(lena - lenb - i);while (aa >= tmp){++str[i];aa = aa - tmp;}str[i] += '0';}BigInteger ans(str);delete[]str;ans.sign = (ans == 0 || sign == b.sign);return ans;}
// % 运算符 (大数取模小数)BigInteger operator % (const long long& b) const{long long ans=0,lena=num.size();for(int i=lena-1;i>=0;i--){ans = (ans*BASE+num[i])%b;}return ans;}
// %运算符 (大数取模大数)BigInteger operator % (const BigInteger& b) const{return *this - *this / b * b;}BigInteger& operator ++ () { *this=*this+1;return *this; } // ++ 运算符BigInteger& operator -- () { *this=*this-1;return *this; } // -- 运算符BigInteger& operator += (const BigInteger& b) { *this=*this+b;return *this; } // += 运算符BigInteger& operator -= (const BigInteger& b) { *this=*this-b;return *this; } // -= 运算符BigInteger& operator *= (const BigInteger& b) { *this=*this*b;return *this; } // *=运算符BigInteger& operator /= (const long long& b) { *this=*this/b;return *this; } // /=运算符BigInteger& operator /= (const BigInteger& b) { *this=*this/b;return *this; } // /= 运算符BigInteger& operator %= (const long long& b) { *this=*this%b;return *this; } // %=运算符BigInteger& operator %= (const BigInteger& b) { *this=*this%b;return *this; } // %=运算符
// < 运算符bool operator < (const BigInteger& b) const{if (sign && !b.sign) { return false; }//正负else if(!sign && b.sign) { return true; }//负正else if(!sign && !b.sign) { return -b < -*this; }//负负//正正if(num.size()!=b.num.size()) return num.size()<b.num.size();for(int i=num.size()-1;i>=0;i--)if(num[i]!=b.num[i]) return num[i]<b.num[i];return false;}bool operator > (const BigInteger& b) const { return b<*this; } // > 运算符bool operator <= (const BigInteger& b) const { return !(b<*this); } // <= 运算符bool operator >= (const BigInteger& b) const { return !(*this<b); } // >= 运算符bool operator != (const BigInteger& b) const { return b<*this||*this<b; } // != 运算符bool operator == (const BigInteger& b) const { return !(b<*this)&&!(*this<b); }//==运算符bool operator || (const BigInteger& b) const { return *this != 0 || b != 0; } // || 运算符bool operator && (const BigInteger& b) const { return *this != 0 && b != 0; } // && 运算符bool operator ! () { return (bool)(*this == 0); } // ! 运算符//重载<<使得可以直接输出大数friend ostream& operator << (ostream &out,const BigInteger &x){if (!x.sign) out<<'-';out<<x.num.back();for(int i=x.num.size()-2;i>=0;i--){char buf[10];//如WIDTH和BASR有变化,此处要修改为%0(WIDTH)dsprintf(buf,"%08d",x.num[i]);for(int j=0;j<strlen(buf);j++) out<<buf[j];}return out;}//重载>>使得可以直接输入大数friend istream& operator >> (istream &in, BigInteger &x){string str;in >> str;size_t len = str.size();int i, start = 0;if (str[0] == '-') start = 1;if (str[start] == '\0') return in;for (int i = start; i < len; i++){if (str[i] < '0' || str[i] > '9') return in;}x.sign = !start;x = str.c_str();return in;}
} ;int cnt;
BigInteger a, b, c, d, n, wpf;
int main() {cin>>a>>b;cout<<a+b; cout<<a/b;
// cin >> a >> b >> n;
// if(n * b * b > a * a) {
// c = n * a + n * b, d = n * b + a;
// cout << c; puts(""); cout << d;
// } else {
// c = n * a + n * b, d = n * b + a;
// cout << c; puts(""); cout << d;
// }
}