#include <iostream>
#include <vector>
#include <set>
#include <sstream>
using namespace std;
int main() {
int k; // Số lượng dãy
cin >> k;
cin.ignore(); // Bỏ qua ký tự xuống dòng sau khi nhập k
multiset<int> sortedElements; // Multiset để tự động sắp xếp các phần tử
for (int i = 0; i < k; ++i) {
string line;
getline(cin, line); // Đọc cả dòng chứa các số của dãy thứ i
stringstream ss(line);
int num;
while (ss >> num) {
sortedElements.insert(num); // Thêm từng phần tử vào multiset
}
}
// In ra các phần tử trong multiset
for (int x : sortedElements) {
cout << x << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8c3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgaW50IGs7IC8vIFPhu5EgbMaw4bujbmcgZMOjeQogICAgY2luID4+IGs7CiAgICBjaW4uaWdub3JlKCk7IC8vIELhu48gcXVhIGvDvSB04buxIHh14buRbmcgZMOybmcgc2F1IGtoaSBuaOG6rXAgawoKICAgIG11bHRpc2V0PGludD4gc29ydGVkRWxlbWVudHM7IC8vIE11bHRpc2V0IMSR4buDIHThu7EgxJHhu5luZyBz4bqvcCB44bq/cCBjw6FjIHBo4bqnbiB04butCgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyArK2kpIHsKICAgICAgICBzdHJpbmcgbGluZTsKICAgICAgICBnZXRsaW5lKGNpbiwgbGluZSk7IC8vIMSQ4buNYyBj4bqjIGTDsm5nIGNo4bupYSBjw6FjIHPhu5EgY+G7p2EgZMOjeSB0aOG7qSBpCiAgICAgICAgc3RyaW5nc3RyZWFtIHNzKGxpbmUpOwogICAgICAgIGludCBudW07CiAgICAgICAgd2hpbGUgKHNzID4+IG51bSkgewogICAgICAgICAgICBzb3J0ZWRFbGVtZW50cy5pbnNlcnQobnVtKTsgLy8gVGjDqm0gdOG7q25nIHBo4bqnbiB04butIHbDoG8gbXVsdGlzZXQKICAgICAgICB9CiAgICB9CgogICAgLy8gSW4gcmEgY8OhYyBwaOG6p24gdOG7rSB0cm9uZyBtdWx0aXNldAogICAgZm9yIChpbnQgeCA6IHNvcnRlZEVsZW1lbnRzKSB7CiAgICAgICAgY291dCA8PCB4IDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=