#include using namespace std; typedef long long ll; typedef long double ld; typedef pair point; typedef pair pii; typedef pair pll; const int N = (int)(20) + 7; const int M = (int)(1e3) + 7; const ll MOD = (ll)(998244353); const ll INF = (ll)(1e10) + 7; const ld eps = (ld)(1e-12); #define pb push_back #define mp make_pair #define x first #define y second void precalc() { } void solve(int num_t) { int n; cin >> n; vector > p(n); vector mark(n); vector > d; for (int i = 0; i < n; ++i) { cin >> p[i].x.x >> p[i].x.y; p[i].y = i; } sort(p.begin(), p.end()); for (int i = 0; i < n; ++i) { for (int j = 0; j < i; ++j) { d.pb(mp((ll)(p[i].x.x - p[j].x.x) * (ll)(p[i].x.x - p[j].x.x) + (ll)(p[i].x.y - p[j].x.y) * (ll)(p[i].x.y - p[j].x.y), mp(i, j))); } } sort(d.begin(), d.end()); vector ans; for (int i = 0; i < (int)(d.size()); ++i) { if (!mark[d[i].y.x] && !mark[d[i].y.y]) { ans.pb(d[i].y); mark[d[i].y.x] = 1; mark[d[i].y.y] = 1; } } cout << ans.size() << endl; for (int i = 0; i < (int)(ans.size()); ++i) { cout << ans[i].x + 1 << ' ' << ans[i].y + 1 << endl; } } int main() { precalc(); /*int ttt; cin >> ttt; for (int i = 0; i < ttt; ++i) { solve(i); }//*/solve(0); return 0; }