// task: <link_to_task>
// date: XX month XXXX
#include <bits/stdc++.h>
using namespace std;
// base types of data
using ll = long long;
using ull = unsigned long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
// all types of arrays
template<typename T> using vc = vector<T>;
using vi = vc<int>;
using vll = vc<ll>;
// all type of matrixes
template<typename T> using vcc = vc<vc<T>>;
using vvi = vcc<vi>;
using vvll = vcc<vll>;
// boolean answers
void printBool(string ans) { cout << ans << endl; }
bool YES(bool b=0) { printBool(b ? "YES" : "NO"); }
bool Yes(bool b=0) { printBool(b ? "Yes" : "No"); }
bool yes(bool b=0) { printBool(b ? "yes" : "no"); }
// gcd, lcm
template<typename T> T gcd(T a, T b) { T t; while(b) { t = a % b; a=b; b=t; } return a;}
template<typename T> T lcm(T a, T b) { return a * b / gcd(a,b); }
// SOLVE OF PROBLEM
void quicksort_heights(vc<short> heights, vc<string> names, int start, int end) {
if (start >= end) return;
int mid = (start + end) / 2;
short X = heights[mid];
int L = start, R = end;
while (L <= R) {
while (heights[L] < X) L += 1;
while (heights[R] > X) R -= 1;
if (L <= R) {
swap(heights[L], heights[R]);
swap(names[L], names[R]);
L += 1;
R -= 1;
}
}
quicksort_heights(heights, names, start, R);
quicksort_heights(heights, names, L, end);
}
void quicksort_names(vc<short> heights, vc<string> names, int start, int end) {
if (start >= end) return;
int mid = (start + end) / 2;
string X = names[mid];
int L = start, R = end;
while (L <= R) {
while (names[L] < X) L += 1;
while (names[R] > X) R -= 1;
if (L <= R) {
swap(heights[L], heights[R]);
swap(names[L], names[R]);
L += 1;
R -= 1;
}
}
quicksort_names(heights, names, start, R);
quicksort_names(heights, names, L, end);
}
void solve() {
int N; cin >> N;
vc<string> names (N, "");
vc<short> heights (N, 0);
for (int i = 0; i < N; i++) {
cin >> names[i];
cin >> heights[i];
}
quicksort_names(heights, names, 0, N-1);
quicksort_heights(heights, names, 0, N-1);
for (int i = 0; i < N; i++) {
cout << heights[i] << " " << names[i] << " ";
}
cout << endl;
}
signed main() {
solve();
return 0;
}
Ly8gdGFzazogPGxpbmtfdG9fdGFzaz4KLy8gZGF0ZTogWFggbW9udGggWFhYWAoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBiYXNlIHR5cGVzIG9mIGRhdGEKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIHVsbCA9IHVuc2lnbmVkIGxvbmcgbG9uZzsKdXNpbmcgcGlpID0gcGFpcjxpbnQsaW50PjsKdXNpbmcgcGxsID0gcGFpcjxsbCxsbD47CgovLyBhbGwgdHlwZXMgb2YgYXJyYXlzCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIHZjID0gdmVjdG9yPFQ+Owp1c2luZyB2aSA9IHZjPGludD47CnVzaW5nIHZsbCA9IHZjPGxsPjsKCi8vIGFsbCB0eXBlIG9mIG1hdHJpeGVzCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIHZjYyA9IHZjPHZjPFQ+PjsKdXNpbmcgdnZpID0gdmNjPHZpPjsKdXNpbmcgdnZsbCA9IHZjYzx2bGw+OwoKLy8gYm9vbGVhbiBhbnN3ZXJzCnZvaWQgcHJpbnRCb29sKHN0cmluZyBhbnMpIHsgY291dCA8PCBhbnMgPDwgZW5kbDsgfQpib29sIFlFUyhib29sIGI9MCkgeyBwcmludEJvb2woYiA/ICJZRVMiIDogIk5PIik7IH0KYm9vbCBZZXMoYm9vbCBiPTApIHsgcHJpbnRCb29sKGIgPyAiWWVzIiA6ICJObyIpOyB9CmJvb2wgeWVzKGJvb2wgYj0wKSB7IHByaW50Qm9vbChiID8gInllcyIgOiAibm8iKTsgfQoKLy8gZ2NkLCBsY20KdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBnY2QoVCBhLCBUIGIpIHsgVCB0OyB3aGlsZShiKSB7IHQgPSBhICUgYjsgYT1iOyBiPXQ7IH0gcmV0dXJuIGE7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGxjbShUIGEsIFQgYikgeyByZXR1cm4gYSAqIGIgLyBnY2QoYSxiKTsgfQoKCi8vIFNPTFZFIE9GIFBST0JMRU0Kdm9pZCBxdWlja3NvcnRfaGVpZ2h0cyh2YzxzaG9ydD4gaGVpZ2h0cywgdmM8c3RyaW5nPiBuYW1lcywgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CiAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuOwogIAogIGludCBtaWQgPSAoc3RhcnQgKyBlbmQpIC8gMjsKICBzaG9ydCBYID0gaGVpZ2h0c1ttaWRdOwogIGludCBMID0gc3RhcnQsIFIgPSBlbmQ7CiAgd2hpbGUgKEwgPD0gUikgewogICAgd2hpbGUgKGhlaWdodHNbTF0gPCBYKSBMICs9IDE7CiAgICB3aGlsZSAoaGVpZ2h0c1tSXSA+IFgpIFIgLT0gMTsKCiAgICBpZiAoTCA8PSBSKSB7CiAgICAgIHN3YXAoaGVpZ2h0c1tMXSwgaGVpZ2h0c1tSXSk7CiAgICAgIHN3YXAobmFtZXNbTF0sIG5hbWVzW1JdKTsKICAgICAgTCArPSAxOwogICAgICBSIC09IDE7CiAgICB9CiAgfQoKICBxdWlja3NvcnRfaGVpZ2h0cyhoZWlnaHRzLCBuYW1lcywgc3RhcnQsIFIpOwogIHF1aWNrc29ydF9oZWlnaHRzKGhlaWdodHMsIG5hbWVzLCBMLCBlbmQpOwp9Cgp2b2lkIHF1aWNrc29ydF9uYW1lcyh2YzxzaG9ydD4gaGVpZ2h0cywgdmM8c3RyaW5nPiBuYW1lcywgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CiAgaWYgKHN0YXJ0ID49IGVuZCkgcmV0dXJuOwogIAogIGludCBtaWQgPSAoc3RhcnQgKyBlbmQpIC8gMjsKICBzdHJpbmcgWCA9IG5hbWVzW21pZF07CiAgaW50IEwgPSBzdGFydCwgUiA9IGVuZDsKICB3aGlsZSAoTCA8PSBSKSB7CiAgICB3aGlsZSAobmFtZXNbTF0gPCBYKSBMICs9IDE7CiAgICB3aGlsZSAobmFtZXNbUl0gPiBYKSBSIC09IDE7CgogICAgaWYgKEwgPD0gUikgewogICAgICBzd2FwKGhlaWdodHNbTF0sIGhlaWdodHNbUl0pOwogICAgICBzd2FwKG5hbWVzW0xdLCBuYW1lc1tSXSk7CiAgICAgIEwgKz0gMTsKICAgICAgUiAtPSAxOwogICAgfQogIH0KCiAgcXVpY2tzb3J0X25hbWVzKGhlaWdodHMsIG5hbWVzLCBzdGFydCwgUik7CiAgcXVpY2tzb3J0X25hbWVzKGhlaWdodHMsIG5hbWVzLCBMLCBlbmQpOwp9Cgp2b2lkIHNvbHZlKCkgewogIGludCBOOyBjaW4gPj4gTjsKICAKICB2YzxzdHJpbmc+IG5hbWVzIChOLCAiIik7CiAgdmM8c2hvcnQ+IGhlaWdodHMgKE4sIDApOwoKICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgY2luID4+IG5hbWVzW2ldOwogICAgY2luID4+IGhlaWdodHNbaV07CiAgfQoKICBxdWlja3NvcnRfbmFtZXMoaGVpZ2h0cywgbmFtZXMsIDAsIE4tMSk7CiAgcXVpY2tzb3J0X2hlaWdodHMoaGVpZ2h0cywgbmFtZXMsIDAsIE4tMSk7CgogIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICBjb3V0IDw8IGhlaWdodHNbaV0gPDwgIiAiIDw8IG5hbWVzW2ldIDw8ICIgIjsKICB9CiAgY291dCA8PCBlbmRsOwp9CgpzaWduZWQgbWFpbigpIHsKICBzb2x2ZSgpOwogIHJldHVybiAwOwp9Cg==