#include <bits/stdc++.h>
using namespace std;
#define int long long
#define f first
#define s second
#define pb push_back
const int N=1e5+1;
struct coord{
int a;
int b;
};
int n;
bool fixat[2*N];
int id[2*N];
int str[2*N];
map<int,vector<int>>mp;
signed main(){
cin>>n;
int mod=2*n;
int ans=0;
int rot=1;
for(int i=0; i<n; i++){
int x,y;
cin>>x>>y;
str[x]=y;
str[y]=x;
id[x]=i;
id[y]=i;
if(y<x) swap(x,y);
mp[(x+y)%mod].pb(i);
if(((x+y)%mod)%2) if(ans<(int)mp[(x+y)%mod].size()){
ans=(int)mp[(x+y)%mod].size();
rot=(x+y)%mod;
};
}
cout<<n-ans<<endl;
for(int i=0; i<2*n; i++) fixat[i]=false;
for (int i=0; i<2*n; i++){
if ((i+str[i])%mod==rot)continue;
int amu=i;
while(fixat[amu]==false)
{
cout<<id[amu]<<" "<<str[amu]<<" "<<(mod+rot-amu)%mod<<endl;
fixat[amu]=true;
fixat[(mod+rot-amu)%mod]=true;
amu=str[(mod+rot-amu)%mod];
}
}
}