#include <bits/stdc++.h>
using namespace std;
bool mysort(const tuple<int, int, int>& a, const tuple<int, int, int>& b) {
if (get<0>(a) < get<0>(b)) {
if (get<1>(a) > get<1>(b)) return false;
else return true;
}
else return false;
}
int main() {
vector<tuple<int, int, int>> queries;
int n;
cin >> n;
for(int i = 0; i<n; i++) {
int l, r, c;
cin >> l >> r;
queries.push_back(make_tuple(l, r, i));
}
sort(queries.begin(), queries.end(), mysort);
// print sorted queries
for (int i = 0; i < queries.size(); i++) {
cout << get<0>(queries[i]) << ", " << get<1>(queries[i]) << endl;
}
return 0;
}
ICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIAogICAgYm9vbCBteXNvcnQoY29uc3QgdHVwbGU8aW50LCBpbnQsIGludD4mIGEsIGNvbnN0IHR1cGxlPGludCwgaW50LCBpbnQ+JiBiKSB7CiAgICAgICAgaWYgKGdldDwwPihhKSA8IGdldDwwPihiKSkgewogICAgICAgICAgICBpZiAoZ2V0PDE+KGEpID4gZ2V0PDE+KGIpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBpbnQgbWFpbigpIHsKICAgICAgICB2ZWN0b3I8dHVwbGU8aW50LCBpbnQsIGludD4+IHF1ZXJpZXM7CiAgICAgICAgaW50IG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgCiAgICAgICAgZm9yKGludCBpID0gMDsgaTxuOyBpKyspIHsKICAgICAgICAgICAgaW50IGwsIHIsIGM7CiAgICAgICAgICAgIGNpbiA+PiBsID4+IHI7CiAgICAgICAgICAgIAogICAgICAgICAgICBxdWVyaWVzLnB1c2hfYmFjayhtYWtlX3R1cGxlKGwsIHIsIGkpKTsKICAgICAgICB9CiAgICAgICAgc29ydChxdWVyaWVzLmJlZ2luKCksIHF1ZXJpZXMuZW5kKCksIG15c29ydCk7CiAgICAgICAgCiAgICAgICAgLy8gcHJpbnQgc29ydGVkIHF1ZXJpZXMKICAgICAgICAKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHF1ZXJpZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgY291dCA8PCBnZXQ8MD4ocXVlcmllc1tpXSkgPDwgIiwgIiA8PCBnZXQ8MT4ocXVlcmllc1tpXSkgPDwgZW5kbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9