#include #include using ll = long long; using ull = unsigned long long; #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define REP(i, m, n) for(int i = (int)(m); i < (int)(n); i++) using namespace std; using namespace atcoder; using mint = modint998244353; const int inf = 1000000007; const ll longinf = 1ll << 60; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; vector a(n), b(n); rep(i, n) cin >> a[i] >> b[i]; vector> query; for(int i = 1; i <= 16; i *= 2) { rep(j, 16 / i) { int l = 2 * j * i, r = (2 * j + 1) * i; ll x = (a[l] + a[r]) / 2; ll y = (b[l] + b[r]) / 2; a[l] = a[r] = x; b[l] = b[r] = y; query.push_back({l, r}); } } // cerr << a[0] << " " << b[0] << endl; for(auto [l, r] : query) { cout << l + 1 << " " << r + 1 << endl; } double score = 2000000 - 100000 * log10(max(abs(a[0] - (ll)5e17), abs(b[0] - (ll)5e17)) + 1); cerr << score * 50 << endl; return 0; }