#include <iostream>
#include <string>
#include <cstring>
#define LONG_INT_LENGTH 100
#define LONG_INT_BASE 10
struct BigInt {
int length;
int digits[LONG_INT_LENGTH];
BigInt();
BigInt(int size);
};
BigInt::BigInt()
{
std::memset(digits, 0, LONG_INT_LENGTH * sizeof(int));
length = LONG_INT_LENGTH;
}
BigInt::BigInt(int size)
{
std::memset(digits, 0, LONG_INT_LENGTH * sizeof(int));
length = size;
}
BigInt operator + (const BigInt& a, const BigInt& b)
{
BigInt result(std::max(a.length, b.length));
int carry = 0;
for (int i = 0; i < result.length || carry; i++)
{
result.digits[i] = a.digits[i] + b.digits[i] + carry;
if (result.digits[i] >= LONG_INT_BASE)
{
result.digits[i] -= LONG_INT_BASE;
carry = 1;
}
else
carry = 0;
}
if (result.digits[result.length])
result.length++;
return result;
}
std::istream& operator >> (std::istream& is, BigInt& n)
{
std::string str;
is >> str;
for (int i = 0; i < str.size(); i++)
{
n.digits[str.size() - i - 1] = str[i] - '0';
}
n.length = str.size();
return is;
}
std::ostream& operator << (std::ostream& os, BigInt& n)
{
for (int i = n.length - 1; i >= 0; i--)
{
std::cout << n.digits[i];
}
return os;
}
int main()
{
BigInt a, b, c;
std::cin >> a >> b;
c = a + b;
std::cout << c << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0cmluZz4KCiNkZWZpbmUgTE9OR19JTlRfTEVOR1RIIDEwMAojZGVmaW5lIExPTkdfSU5UX0JBU0UgICAxMAoKc3RydWN0IEJpZ0ludCB7CglpbnQgbGVuZ3RoOwogICAgaW50IGRpZ2l0c1tMT05HX0lOVF9MRU5HVEhdOwoJQmlnSW50KCk7CglCaWdJbnQoaW50IHNpemUpOwp9OwoKQmlnSW50OjpCaWdJbnQoKQp7CglzdGQ6Om1lbXNldChkaWdpdHMsIDAsIExPTkdfSU5UX0xFTkdUSCAqIHNpemVvZihpbnQpKTsKCWxlbmd0aCA9IExPTkdfSU5UX0xFTkdUSDsKfQoKQmlnSW50OjpCaWdJbnQoaW50IHNpemUpCnsKCXN0ZDo6bWVtc2V0KGRpZ2l0cywgMCwgTE9OR19JTlRfTEVOR1RIICogc2l6ZW9mKGludCkpOwoJbGVuZ3RoID0gc2l6ZTsKfQoKQmlnSW50IG9wZXJhdG9yICsgKGNvbnN0IEJpZ0ludCYgYSwgY29uc3QgQmlnSW50JiBiKQp7CglCaWdJbnQgcmVzdWx0KHN0ZDo6bWF4KGEubGVuZ3RoLCBiLmxlbmd0aCkpOwoKCWludCBjYXJyeSA9IDA7Cglmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGggfHwgY2Fycnk7IGkrKykKCXsKCQlyZXN1bHQuZGlnaXRzW2ldID0gYS5kaWdpdHNbaV0gKyBiLmRpZ2l0c1tpXSArIGNhcnJ5OwoJCWlmIChyZXN1bHQuZGlnaXRzW2ldID49IExPTkdfSU5UX0JBU0UpCgkJewoJCQlyZXN1bHQuZGlnaXRzW2ldIC09IExPTkdfSU5UX0JBU0U7CgkJCWNhcnJ5ID0gMTsKCQl9CgkJZWxzZQoJCQljYXJyeSA9IDA7Cgl9CgoJaWYgKHJlc3VsdC5kaWdpdHNbcmVzdWx0Lmxlbmd0aF0pCgkJcmVzdWx0Lmxlbmd0aCsrOwoKCXJldHVybiByZXN1bHQ7Cn0KCnN0ZDo6aXN0cmVhbSYgb3BlcmF0b3IgPj4gKHN0ZDo6aXN0cmVhbSYgaXMsIEJpZ0ludCYgbikKewoJc3RkOjpzdHJpbmcgc3RyOwoJaXMgPj4gc3RyOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHIuc2l6ZSgpOyBpKyspCiAgICB7CiAgICAgIG4uZGlnaXRzW3N0ci5zaXplKCkgLSBpIC0gMV0gPSBzdHJbaV0gLSAnMCc7CiAgICB9CiAgICBuLmxlbmd0aCA9IHN0ci5zaXplKCk7IAoJcmV0dXJuIGlzOwp9CgpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLCBCaWdJbnQmIG4pCnsKCWZvciAoaW50IGkgPSBuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQogICAgewogICAgICBzdGQ6OmNvdXQgPDwgbi5kaWdpdHNbaV07CiAgICB9CglyZXR1cm4gb3M7Cn0KCgppbnQgbWFpbigpCnsKCUJpZ0ludCBhLCBiLCBjOwoJc3RkOjpjaW4gPj4gYSA+PiBiOwoJYyA9IGEgKyBiOwoJc3RkOjpjb3V0IDw8IGMgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9