#include <bits/stdc++.h>
using ll = long long;
using namespace std;

int main() {
    string s1, s2;
    cin >> s1 >> s2;

    ll len1 = s1.length();
    ll len2 = s2.length();
    ll maxLen = max(len1, len2);
    vector<ll> a(maxLen + 5, 0), b(maxLen + 5, 0), c(maxLen + 5, 0);
    // 从索引1开始存储,逆序存储数字
    for (ll i = len1 - 1, j = 1; i >= 0; i--, j++) {
        a[j] = s1[i] - '0';
    }
    for (ll i = len2 - 1, j = 1; i >= 0; i--, j++) {
        b[j] = s2[i] - '0';
    }
    // 逐位相加并处理进位
    ll len = maxLen;
    for (ll i = 1; i <= len; i++) {
        c[i] += a[i] + b[i];  // 使用+=而不是=,因为可能有来自上一位的进位
        c[i + 1] += c[i] / 10;  // 进位加到下一位
        c[i] %= 10;
    }
    // 检查最高位是否有进位
    if (c[len + 1] > 0) {
        len++;
    }
    // 输出结果(逆序输出)
    for (ll i = len; i >= 1; i--) {
        cout << c[i];
    }
    cout << endl;
    return 0;
}