#include <iostream>
#include <string>
#include <algorithm> // 用于 reverse 函数
using namespace std;
// 函数:计算两个超大整数的和
string addLargeNumbers(const string& a, const string& b) {
string result; // 存储结果
int carry = 0; // 进位
int i = a.length() - 1; // 从 a 的末尾开始
int j = b.length() - 1; // 从 b 的末尾开始
// 从最低位开始逐位相加
while (i >= 0 || j >= 0 || carry) {
int sum = carry; // 当前位的和初始化为进位值
// 如果 a 还有未处理的位,加上当前位
if (i >= 0) {
sum += a[i] - '0'; // 将字符转换为数字
i--;
}
// 如果 b 还有未处理的位,加上当前位
if (j >= 0) {
sum += b[j] - '0'; // 将字符转换为数字
j--;
}
// 计算当前位的值和进位
carry = sum / 10; // 进位
sum %= 10; // 当前位的值
// 将当前位的值添加到结果中
result.push_back(sum + '0'); // 将数字转换为字符
}
// 反转结果字符串,因为我们是从最低位开始计算的
reverse(result.begin(), result.end());
return result;
}
int main() {
string a, b;
cin >> a >> b; // 输入两个超大整数
string sum = addLargeNumbers(a, b); // 计算它们的和
cout << sum << endl; // 输出结果
return 0;
}