#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
const int MAXN = 10000;
struct BigInteger {
    int digit[MAXN];
    int length;
    BigInteger();
    BigInteger(int x);
    BigInteger(string str);
    BigInteger(const BigInteger& b);
    BigInteger operator=(int x);
    BigInteger operator=(string str);
    BigInteger operator=(const BigInteger& b);
    BigInteger operator+(const BigInteger& b);
    friend istream& operator>>(istream& cin, BigInteger& b);
    friend ostream& operator<<(ostream& cout, const BigInteger& b);
};
BigInteger::BigInteger() {
    memset(digit, 0, sizeof(digit));
    length = 0;
}
BigInteger::BigInteger(int x) {
    memset(digit, 0, sizeof(digit));
    length = 0;
    if (!x) {
        digit[length++] = x;
    }
    while (x) {
        digit[length++] = x % 10;
        x /= 10;
    }
}
BigInteger::BigInteger(string str) {
    memset(digit, 0, sizeof(digit));
    length = str.size();
    for (int i = 0; i < length; ++i) {
        digit[i] = str[length - 1 - i] - '0';
    }
}
BigInteger::BigInteger(const BigInteger& b) {
    memset(digit, 0, sizeof(digit));
    length = b.length;
    for (int i = 0; i < length; ++i) {
        digit[i] = b.digit[i];
    }
}
BigInteger BigInteger::operator=(int x) {
    memset(digit, 0, sizeof(digit));
    length = 0;
    if (!x) {
        digit[length++] = x;
    }
    while (x) {
        digit[length++] = x % 10;
        x /= 10;
    }
    return *this;
}
BigInteger BigInteger::operator=(string str) {
    memset(digit, 0, sizeof(digit));
    length = str.size();
    for (int i = 0; i < length; ++i) {
        digit[i] = str[length - 1 - i] - '0';
    }
    return *this;
}
BigInteger BigInteger::operator=(const BigInteger& b) {
    memset(digit, 0, sizeof(digit));
    length = b.length;
    for (int i = 0; i < length; ++i) {
        digit[i] = b.digit[i];
    }
    return *this;
}
BigInteger BigInteger::operator+(const BigInteger& b) {
    BigInteger ans;
    int carry = 0;
    for (int i = 0; i < length || i < b.length; ++i) {
        ans.digit[ans.length++] = (digit[i] + b.digit[i] + carry) % 10;
        carry = (digit[i] + b.digit[i] + carry) / 10;
    }
    if (carry) {
        ans.digit[ans.length++] = carry;
    }
    return ans;
}
istream& operator>>(istream& cin, BigInteger& b) {
    string in;
    cin >> in;
    b = in;
    return cin;
}
ostream& operator<<(ostream& cout, const BigInteger& b) {
    for (int i = b.length - 1; i >= 0; --i) {
        cout << b.digit[i];
    }
    return cout;
}
int main() {
    BigInteger a;
    BigInteger b;
    while (cin >> a >> b) {
        cout << a + b << endl;
    }
    return 0;
}