#include <bits/stdc++.h> using namespace std; using ll = long long; using llu = long long unsigned; vector<ll> dx = { 0, 0, -1, 1}; vector<ll> dy = {-1, 1, 0, 0}; #define TARGET 500000000000000000LL ll scoreCal(ll a0, ll a1, ll b0, ll b1) { ll newA = (a0 + a1) / 2; ll newB = (b0 + b1) / 2; ll score = max( abs(TARGET-newA), abs(TARGET-newB)); return score; } int main() { int N; cin >> N; vector<ll> A(N), B(N); for (int i=0; i<N; ++i) { cin >> A[i] >> B[i]; } vector<pair<int, int>> ret; for (int i=0; i<50; ++i) { int tmp = 0; ll minScore = scoreCal(A[0], A[0], B[0], B[0]); //cout << "1 - 1 minScore = " << minScore << endl; for (int j=1; j<N; ++j) { ll score = scoreCal(A[0], A[j], B[0], B[j]); //cout << "1 - " << j+1 << " minScore = " << score << endl; if (score < minScore) { minScore = score; tmp = j; } } if (tmp == 0) { break; } ret.push_back(make_pair(1, tmp+1)); //cout << "1 - " << tmp+1 << " execute" << endl; ll newA = (A[0] + A[tmp]) / 2; ll newB = (B[0] + B[tmp]) / 2; A[0] = A[tmp] = newA; B[0] = B[tmp] = newB; //for (int i=0; i<N; ++i) { cout << A[i] << " " << B[i] << endl; } } cout << ret.size() << endl; for (auto x : ret) { cout << x.first << " " << x.second << endl; } return 0; }