/*
* Language: Standard C++20 [-std=c++20]
* Codeforces : @zvwg.vx & @orzryune
*/
#pragma GCC optimize("fast-math,O3")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("tune=native")
// #pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
#if LOCAL
#include <algo/debug.h>
#endif
using namespace std;
#define el cout << '\n'
#define rt return
#define ll long long
#define ull unsigned long long
#define vec vector
#define bs bitset
#define ust unordered_set
#define ump unordered_map
#define priq priority_queue
template <typename T> T lcm(T a, T b) { rt a * (b / __gcd(a, b)); }
template <typename T> double lg(T a, T b) { rt log(b) / log(a); }
template <typename T> void maximize(T& a, T b) { if (a < b) a = b; }
template <typename T> void minimize(T& a, T b) { if (a > b) a = b; }
template <typename T> ull P(T n, T k) { ull res = 1; for (int i = 0; i < k; i++) res *= (n - i); rt res; }
template <typename T> ull C(T n, T k) { ull res = 1; for (int i = 1; i <= k; i++) res = res * (n - i + 1) / i; rt res; }
const int limit = 1e6;
const int infi = 1e9;
const int mod = 1e9 + 7;
void open_file(const string& file) {
if (file == "-1") rt;
freopen((file + ".inp").c_str(), "r", stdin);
freopen((file + ".out").c_str(), "w", stdout);
}
struct value {
string sub;
ll pts;
};
bool compare(value a, value b) {
rt a.pts <= b.pts;
}
signed main() {
cin.tie(nullptr), cout.tie(nullptr)
-> ios_base::sync_with_stdio(false);
#ifndef ONLINE_JUDGE
srand(time(nullptr));
open_file("sol");
#endif
int n;
cin >> n;
vec<value> arr(n);
for (auto& [x, y] : arr) cin >> x >> y;
sort(arr.begin(), arr.end(), compare);
for (auto [x, y] : arr) {
cout << x << ' ' << y; el;
}
el;
rt 0;
}
LyoKKiBMYW5ndWFnZTogU3RhbmRhcmQgQysrMjAgWy1zdGQ9YysrMjBdCiogQ29kZWZvcmNlcyA6IEB6dndnLnZ4ICYgQG9yenJ5dW5lCiovCgojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiZmFzdC1tYXRoLE8zIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIm5vLXN0YWNrLXByb3RlY3RvciIpIAojcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikKLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKLy8gI3ByYWdtYSBHQ0MgdGFyZ2V0KCJ0dW5lPW5hdGl2ZSIpCi8vICNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4LGF2eDIsZm1hIikKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKI2lmIExPQ0FMCiNpbmNsdWRlIDxhbGdvL2RlYnVnLmg+CiNlbmRpZgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZWwgY291dCA8PCAnXG4nCiNkZWZpbmUgcnQgcmV0dXJuCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHZlYyB2ZWN0b3IKI2RlZmluZSBicyBiaXRzZXQKI2RlZmluZSB1c3QgdW5vcmRlcmVkX3NldAojZGVmaW5lIHVtcCB1bm9yZGVyZWRfbWFwCiNkZWZpbmUgcHJpcSBwcmlvcml0eV9xdWV1ZQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgbGNtKFQgYSwgVCBiKSB7IHJ0IGEgKiAoYiAvIF9fZ2NkKGEsIGIpKTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZG91YmxlIGxnKFQgYSwgVCBiKSB7IHJ0IGxvZyhiKSAvIGxvZyhhKTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBtYXhpbWl6ZShUJiBhLCBUIGIpIHsgaWYgKGEgPCBiKSBhID0gYjsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBtaW5pbWl6ZShUJiBhLCBUIGIpIHsgaWYgKGEgPiBiKSBhID0gYjsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdWxsIFAoVCBuLCBUIGspIHsgdWxsIHJlcyA9IDE7IGZvciAoaW50IGkgPSAwOyBpIDwgazsgaSsrKSByZXMgKj0gKG4gLSBpKTsgcnQgcmVzOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1bGwgQyhUIG4sIFQgaykgeyB1bGwgcmVzID0gMTsgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgaSsrKSByZXMgPSByZXMgKiAobiAtIGkgKyAxKSAvIGk7IHJ0IHJlczsgfQoKY29uc3QgaW50IGxpbWl0ID0gMWU2Owpjb25zdCBpbnQgaW5maSA9IDFlOTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7Cgp2b2lkIG9wZW5fZmlsZShjb25zdCBzdHJpbmcmIGZpbGUpIHsKICAgIGlmIChmaWxlID09ICItMSIpIHJ0OwogICAgZnJlb3BlbigoZmlsZSArICIuaW5wIikuY19zdHIoKSwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKChmaWxlICsgIi5vdXQiKS5jX3N0cigpLCAidyIsIHN0ZG91dCk7Cn0KCnN0cnVjdCB2YWx1ZSB7CiAgICBzdHJpbmcgc3ViOwogICAgbGwgcHRzOwp9OwoKYm9vbCBjb21wYXJlKHZhbHVlIGEsIHZhbHVlIGIpIHsKICAgIHJ0IGEucHRzIDw9IGIucHRzOwp9CnNpZ25lZCBtYWluKCkgeyAKICAgIGNpbi50aWUobnVsbHB0ciksIGNvdXQudGllKG51bGxwdHIpCiAgICAtPiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgc3JhbmQodGltZShudWxscHRyKSk7CiAgICBvcGVuX2ZpbGUoInNvbCIpOwogICAgI2VuZGlmCgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKCiAgICB2ZWM8dmFsdWU+IGFycihuKTsKICAgIGZvciAoYXV0byYgW3gsIHldIDogYXJyKSBjaW4gPj4geCA+PiB5OwoKICAgIHNvcnQoYXJyLmJlZ2luKCksIGFyci5lbmQoKSwgY29tcGFyZSk7CgogICAgZm9yIChhdXRvIFt4LCB5XSA6IGFycikgewogICAgICAgIGNvdXQgPDwgeCA8PCAnICcgPDwgeTsgZWw7CiAgICB9CgogICAgZWw7IAogICAgcnQgMDsgICAKfQ==