#include<iostream>
#include<vector>
#include <sstream>
using namespace std;
vector<int> take_int(string str) {
stringstream ss(str);
vector<int> result;
char ch;
int tmp;
while(ss >> tmp) {
result.push_back(tmp);
ss >> ch;
}
return result;
}
void mergeArrays(vector<int> arr1, vector<int> arr2, int n1,
int n2, vector<int> &arr3)
{
int i = 0, j = 0, k = 0;
while (i<n1 && j <n2)
{
if (arr1[i] < arr2[j])
arr3[k++] = arr1[i++];
else
arr3[k++] = arr2[j++];
}
while (i < n1)
arr3[k++] = arr1[i++];
while (j < n2)
arr3[k++] = arr2[j++];
}
// Driver code
int main()
{
string a,b;
cin>>a;
cin>>b;
vector<int> arr1 = take_int(a);
vector<int> arr2 = take_int(b);
int n1 = arr1.size();
int n2 = arr2.size();
vector<int> arr3(n1+n2);
mergeArrays(arr1, arr2, n1, n2, arr3);
for (int i=0; i < n1+n2-1; i++)
cout << arr3[i] << ",";
cout<<arr3[n1+n2-1];
return 0;
}
CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlIDxzc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gdGFrZV9pbnQoc3RyaW5nIHN0cikgewogICAgc3RyaW5nc3RyZWFtIHNzKHN0cik7CiAgICB2ZWN0b3I8aW50PiByZXN1bHQ7CiAgICBjaGFyIGNoOwogICAgaW50IHRtcDsKICAgIHdoaWxlKHNzID4+IHRtcCkgewogICAgICAgIHJlc3VsdC5wdXNoX2JhY2sodG1wKTsKICAgICAgICBzcyA+PiBjaDsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KCnZvaWQgbWVyZ2VBcnJheXModmVjdG9yPGludD4gYXJyMSwgdmVjdG9yPGludD4gYXJyMiwgaW50IG4xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuMiwgdmVjdG9yPGludD4gJmFycjMpCnsKICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSAwOwogCiAgICB3aGlsZSAoaTxuMSAmJiBqIDxuMikKICAgIHsKCiAgICAgICAgaWYgKGFycjFbaV0gPCBhcnIyW2pdKQogICAgICAgICAgICBhcnIzW2srK10gPSBhcnIxW2krK107CiAgICAgICAgZWxzZQogICAgICAgICAgICBhcnIzW2srK10gPSBhcnIyW2orK107CiAgICB9CiAKICAgIHdoaWxlIChpIDwgbjEpCiAgICAgICAgYXJyM1trKytdID0gYXJyMVtpKytdOwogCiAgICB3aGlsZSAoaiA8IG4yKQogICAgICAgIGFycjNbaysrXSA9IGFycjJbaisrXTsKfQogCi8vIERyaXZlciBjb2RlCmludCBtYWluKCkKewoJc3RyaW5nIGEsYjsKCWNpbj4+YTsKCWNpbj4+YjsKCXZlY3RvcjxpbnQ+IGFycjEgPSB0YWtlX2ludChhKTsKCXZlY3RvcjxpbnQ+IGFycjIgPSB0YWtlX2ludChiKTsKCWludCBuMSA9IGFycjEuc2l6ZSgpOwoJaW50IG4yID0gYXJyMi5zaXplKCk7CiAKICAgIHZlY3RvcjxpbnQ+IGFycjMobjErbjIpOwogICAgbWVyZ2VBcnJheXMoYXJyMSwgYXJyMiwgbjEsIG4yLCBhcnIzKTsKIAogICAgZm9yIChpbnQgaT0wOyBpIDwgbjErbjItMTsgaSsrKQogICAgICAgIGNvdXQgPDwgYXJyM1tpXSA8PCAiLCI7Cgljb3V0PDxhcnIzW24xK24yLTFdOwogICAgcmV0dXJuIDA7Cn0=