#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define _CRT_SECURE_NO_WARNINGS #define rep(i, n) for(int i=0; i<(n); i++) #define FOR(i, m, n) for(int i=(m);i<(n);i++) #define SZ(x) ((int)(x).size()) #define all(x) (x).begin(),(x).end() #define SORT(x) sort((x).begin(),(x).end()) #define REVE(x) reverse((x).begin(),(x).end()) #define mp make_pair #define pb push_back typedef vector VI; typedef vector VS; typedef vector> VVI; typedef pair PII; typedef long long LL; //最大公約数 int gcd(int n, int m) { if (m == 0)return n; return gcd(m, n%m); } //最小公倍数 int lcm(int n, int m) { int g = gcd(n, m); return n / g * m; } int main() { int n; cin >> n; VI a(n), b(n); rep(i, n)cin >> a[i] >> b[i]; int all_lcm = lcm(b[0], b[1]); FOR(i, 2, n)all_lcm = lcm(all_lcm, b[i]); vector ab(n); rep(i, n) { ab[i] = mp(a[i] * (all_lcm / b[i]), i); } SORT(ab); REVE(ab); rep(i, n)cout << a[ab[i].second] << " " << b[ab[i].second] << endl; }