#include <iostream>
#include <vector>
#include<deque>
using namespace std;
void primeN(vector<int>& prime, int n) {
vector<bool> isPrime(n, true);
for (int i = 2; i < n; i++) {
if (isPrime[i]) prime.push_back(i);
if (i * i < n) {
for (int j = i * i; j < n; j += i) {
isPrime[j] = false;
}
}
}
}
void getNum(vector<int>& num, string s) {
int start = 0, end;
for (end = 0; end < s.size(); end++) {
if (s[end] == ',' ) {
string tmp(s.begin() + start, s.begin() + end);
start = end + 1;
num.push_back(stoi(tmp));
}
}
num.push_back(stoi(string(s.begin() + start, s.end())));
}
int main() {
string num1, num2;
cin >> num1 >> num2;
vector<int>prime;
vector<int> nums1;
vector<int> nums2;
deque<int>res;
primeN(prime, 100);
getNum(nums1, num1);
getNum(nums2, num2);
int maxlen = nums1.size() > nums2.size() ? nums1.size() : nums2.size();
while (nums1.size() < maxlen) {
nums1.insert(nums1.begin(), 0);
}
while (nums2.size() < maxlen) {
nums2.insert(nums2.begin(), 0);
}
int carry = 0, index = 0;
for (int i = maxlen - 1; i >= 0; i--) {
int sum = nums1[i] + nums2[i];
if (carry == 1) {
sum++;
carry = 0;
}
if (sum >= prime[index]) {
sum -= prime[index];
carry = 1;
}
res.push_front(sum);
index++;
}
if (carry == 1) {
res.push_front(1);
}
bool flag = true;
while(!res.empty()) {
if (flag) {
cout << res.front();
res.pop_front();
flag = false;
continue;
}
cout << ',' << res.front();
res.pop_front();
}
}
// 64 位输出请用 printf("%lld")