#include <iostream> #include <cstring> #include <string> #include <algorithm> #include <vector> using namespace std; int Prime[30]; bool isPrime(int x) { if(x <= 3) return x > 1; if(x % 6 != 1 && x % 6 != 5) return false; for(int i = 5; i * i <= x; i += 5) { if(x % (i + 2) == 0 || x % i == 0) return false; } return true; } vector<int> str_vec(string &a) { vector<int> va; a += ","; int t = 0; for(int i = 0; i < a.size(); i ++) { while(a[i] != ',') t = t * 10 + a[i ++] - '0'; va.push_back(t); t = 0; } reverse(va.begin(), va.end()); return va; } string vec_str(vector<int>& v) { int n = v.size(); string s; s += to_string(v[n - 1]); for(int i = n - 2; i >= 0; i --) { s += ","; s += to_string(v[i]); } return s; } string add(string& a, string& b) { vector<int> va = str_vec(a), vb = str_vec(b); vector<int> res; int t = 0, cnt = 1; for(int i = 0; i < va.size() || i < vb.size(); i ++) { if(i < a.size()) t += va[i]; if(i < b.size()) t += vb[i]; int p = Prime[cnt ++]; res.push_back(t % p); t /= p; } if(t) res.push_back(t); return vec_str(res); } int main() { int cnt = 1; for(int i = 2; cnt <= 25; i ++ ) { if(isPrime(i)) Prime[cnt ++] = i; } string a, b; while (cin >> a >> b) { // 注意 while 处理多个 case cout << add(a, b); } return 0; } // 64 位输出请用 printf("%lld")