class BigInt{
public:
vector<int> a;
BigInt operator+(const BigInt& b)
{
BigInt r;
int s=max(a.size(),b.a.size());
for(int i=0;i<s;i++)
{
r.a.push_back(0);
if(i<a.size())
{
r.a[i]+=a[i];
}
if(i<b.a.size())
{
r.a[i]+=b.a[i];
}
}
int la=0;
for(int i=0;i<s;i++)
{
r.a[i]+=la;
la=0;
if(r.a[i]>=10)
{
la+=r.a[i]/10;
r.a[i]%=10;
if(i+2>s)
{
s=i+2;
r.a.push_back(0);
}
}
}
return r;
}
friend ostream &operator<<(ostream &output, const BigInt &x)
{
for(int i=x.a.size()-1;i>=0;i--)
{
output<<x.a[i];
}
return output;
}
friend istream &operator>>(istream &input, BigInt &x)
{
string g;
input>>g;
vector<int>().swap(x.a);
for(int i=g.size()-1;i>=0;i--)
{
x.a.push_back(g[i]-'0');
}
if(x.a.size()==0)
{
x.a.push_back(0);
}
return input;
}
};