#include <iostream>
using namespace std;
int Change(char a[], int b[]) {
int ans = 0, k = 0;
int ret = 1;
for (int i = 49; i >= 0; i--) {
if (a[i] == ',') {
i--;
if (a[i - 1] != ',' && i > 0) {
ret *= b[k++];
ans += (((a[i - 1] - '0') * 10 + (a[i] - '0')) * ret);
i--;
} else {
ret *= b[k++];
ans += ((a[i] - '0') * ret);
}
} else if (a[i] == '1' || a[i] == '0') {
ans = a[i] - '0';
}
}
return ans;
}
void Change1(int a, int c[]) {
int ret = 1, i = 0;
char b[50];
while (a >= ret) {
if (a < ret * c[i])
break;
ret *= c[i++];
}
int j = 0, k = 0;
while (i > 0) {
if (a == 0) {
b[k++] = '0';
b[k++] = ',';
i--;
} else {
j = a / ret;
a = a % ret;
ret = ret / c[i - 1];
if (j < 10) {
b[k++] = j + '0';
} else {
int l;
l = j / 10;
j = j % 10;
b[k++] = l + '0';
b[k++] = j + '0';
}
b[k++] = ',';
i--;
}
}
b[k++] = a + '0';
b[k] = '\0';
cout << b << endl;
}
int main() {
char a[50], b[50];
int c[25];
int i = 0, j = 2;
int flag = 0;
while (i < 25) {
flag = 0;
for (int k = 2; k * k <= j; k++) {
if (j % k == 0 && j != k) {
flag = 1;
break;
}
}
if (flag == 0) {
c[i++] = j++;
} else {
j++;
}
}
while (cin >> a >> b) {
int ea, eb;
ea = Change(a, c);
eb = Change(b, c);
Change1(ea + eb, c);
return 0;
}
}