const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
function Solution(data) {
let rounds = [];
let result = [];
for (let i = 0; i < data.length; i++) {
let split = data[i].split(",");
let o = [parseInt(split[0]), parseInt(split[1])];
rounds.push(o);
}
function canMerge(a, b) {
if (a[0] < b[0]) {
if (a[1] < b[0]) return false;
else return true;
} else if (b[0] < a[0]) {
if (b[1] < a[0]) return false;
else return true;
} else if(a[0] === b[0]) return true
}
function merge(a, b) {
return [Math.min(a[0], b[0]), Math.max(a[1], b[1])];
}
function eqArray(a, b) {
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
if (a[i] !== b[i]) return false;
}
return true;
}
function sortArr(arrString) {
let result = []
for (let i = 0; i < arrString.length; i++) {
let split = arrString[i].split(",");
let o = [parseInt(split[0]), parseInt(split[1])];
result.push(o)
}
result.sort((a, b) => (a[0] - b[0]))
result.forEach((item, index) => {
result[index] = item.join(',')
})
return result
}
for (let p = 0; p < rounds.length; p++) {
let merged = false;
for (let q = 0; q < rounds.length; q++) {
if (p === q) continue;
if (canMerge(rounds[p], rounds[q])) {
result.push(merge(rounds[p], rounds[q]).toString());
merged = true;
}
}
if (!merged) result.push(rounds[p].toString());
merged = false;
}
result = sortArr(result)
const rt = [...new Set(result)];
if (eqArray(rt, data)) return rt.join(" ");
else return Solution(rt).toString();
}
while ((line = await readline())) {
let tokens = line.split(" ");
if (Array.isArray(tokens)) console.log(Solution(tokens));
}
})();