#include <cstdio>
using namespace std;


int main(void){
  
    int n,i,t,test,pos,s,v,temp,size,offset,off2;
    long long int ll;
    
    scanf("%d",&n);
    int *p=new int[2*n];// megoldast tarolom itt
    int *coords=new int[4*n];// input koordinatakhoz
    int *cnt=new int[n+1];
    int *id=new int[n];
    long long int *A=new long long int[n+1];// kupac (legfeljebb) n elemu, de szamozas 1-tol kezdodik!

    for(i=0;i<4*n;i++)scanf("%d",&coords[i]);

    for(test=1,t=0;test&&t<2;t++){
      // elemek rendezese bal vegpont szerint novekvo sorrendben O(n) idoben
      for(i=0;i<=n;i++)cnt[i]=0;
      for(i=0;i<n;i++)cnt[coords[4*i+t]]++;
      for(s=0,i=1;i<=n;i++){temp=cnt[i];cnt[i]=s;s+=temp;}
      for(i=0;i<n;i++){v=coords[4*i+t];id[cnt[v]]=i;cnt[v]++;}
      
      for(pos=i=size=0;i<n;i++){
         while(pos<n&&coords[4*id[pos]+t]==i+1){
	       ll=coords[4*id[pos]+t+2];
	       ll=(ll<<20)+id[pos];// felso 20 biten a jobb vegpont koordinataja, also 20 biten az (eredeti) pozicio tarolasa
	       pos++;
	       for(size++,offset=size;offset>1&&A[offset>>1]>ll;A[offset]=A[offset>>1],offset>>=1);// uj elem hozzaadasa a kupachoz, kupacot a jobb vegpont szerint rendezem
	       A[offset]=ll;
	 }
	 // itt a kupac mindegyik elemenek bal vegpontja kisebb, mint (i+1), igy, ha megoldhato a feladat, akkor
	 // olyan megoldas is van, amiben a kupac legkisebb elemenel (i+1)-et valasztottunk a bastya (megfelelo) koordinatajanak
	 // azaz a moho algoritmus itt mukodik
	 
	 if(size==0){test=0;break;}// kupacom ures, nem megoldhato a feladat
	 ll=A[1];// ez a legkisebb elem a kupacban
	 if((ll>>20)<i+1){test=0;break;}// kupac legkisebb elemenek jobb vegpontja kisebb, mint (i+1), feladat nem megoldhato
	 p[2*(ll&1048575)+t]=i+1;// megoldas koordinatajanak tarolasa
	 
	 ll=A[size];
	 size--;
	 offset=1;
	 while(1){// elem sullyesztese a kupacban
	       off2=2*offset;
	       if(off2>size)break;
	       if(off2<size&&A[off2]>A[off2+1])off2++;
	       if(A[off2]>ll)break;
	       A[offset]=A[off2];
	       offset=off2;
	 }
	 A[offset]=ll;
    }}    
    
    if(test){for(i=0;i<n;i++)printf("%d %d\n",p[2*i],p[2*i+1]);}
    else printf("NEM\n");

    return 0;
}
