#include using namespace std; long long N; long long A[59]; long long B[59]; const long long avg = 500000000000000000; int main() { // Step 1. ε…₯εŠ› cin >> N; for (int i = 1; i <= N; i++) cin >> A[i] >> B[i]; // Step 2. ε‡ΊεŠ› vector> output; for (int i = 1; i <= 50; i++) { long long A_max=0; int A_max_itr; long long B_max=0; int B_max_itr; long long A_min=5000000000000000000; int A_min_itr; long long B_min=5000000000000000000; int B_min_itr; for (int j = 1; j <= N; j++){ if( A[j]>A_max ){ A_max_itr = j; A_max = A[j]; } if( B[j]>B_max ){ B_max_itr = j; B_max = A[j]; } if( A[j]abs(B_avg-avg) ){ if(A_max_itr!=A_min_itr){ A[A_max_itr] = A_avg; A[A_min_itr] = A_avg; long long B_avg_2 = (B[A_max_itr]+B[A_min_itr])/2; B[A_max_itr] = B_avg_2; B[A_min_itr] = B_avg_2; //cout << A_max_itr << " " << A_min_itr << endl; output.push_back({A_max_itr,A_min_itr}); } } else{ if(B_max_itr!=B_min_itr){ B[B_max_itr] = B_avg; B[B_min_itr] = B_avg; long long A_avg_2 = (A[B_max_itr]+A[B_min_itr])/2; A[B_max_itr] = A_avg_2; A[B_min_itr] = A_avg_2; //cout << B_max_itr << " " << B_min_itr << endl; output.push_back({B_max_itr,B_min_itr}); } } } cout << output.size() << endl; for(auto x:output){ cout << x.first << " " << x.second << endl; } return 0; }