#include // #include #define rng(a) a.begin(),a.end() #define rrng(a) a.rbegin(),a.rend() #define INF 2000000000000000000 #define ll long long #define ull unsigned long long #define ld long double #define pll pair using namespace std; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> X; map index; ll N; cin >> N; for (ll i = 0; i < N; ++i) { ll x, y; cin >> x >> y; index[{x, y}] = i; X[x].push_back(y); } pll before = {-1, -1}; vector ans; for (const auto& [key, temp] : X){ vector value = temp; sort(rng(value)); for (ll i = 0; i < (ll)value.size(); ++i) { ll index1 = index[{key, value.at(i)}]; if (before.first != -1) { ans.push_back({index[before] + 1, index1 + 1}); before = {-1, -1}; } else { before = {key, value.at(i)}; } } } cout << ans.size() << "\n"; for (ll i = 0; i < ans.size(); ++i) { cout << ans.at(i).first << ' ' << ans.at(i).second << "\n"; } }