#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;
}