#include<iostream>
#include<set>
#include<algorithm>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<numeric>
#include<queue>
#include<cmath>
using namespace std;
typedef long long ll;
const ll INF=1LL<<60;
typedef pair<int,int> P;
typedef pair<int,P> PP;
const ll MOD=998244353;
const double PI=acos(-1);

int main(){
    int N;
    cin>>N;
    

    vector<P> order;

    map<P,int> dogid;

    for(int i=0;i<N;i++){
        int x,y;
        cin>>x>>y;
        order.emplace_back(x,y);
        dogid[make_pair(x,y)]=i;

    }
   

    vector<pair<int,int>> ans;

    sort(order.begin(),order.end());

    for(int i=0;i+1<N;i+=2){
        ans.emplace_back(dogid[order[i]],dogid[order[i+1]]);
    }
   
    cout<<ans.size()<<endl;
    for(auto [z,w]:ans){
        cout<<z+1<<' '<<w+1<<endl;
    }
}