#include<bits/stdc++.h>
#define f first
#define s second
using namespace std;
typedef pair<int,int> p;
typedef pair<p,p> P;
typedef pair<P,int> PP;
int c,n,used[10],ww;

int x0[10];
int y2[10];
int x1[10];
int y3[10];
PP dd[10];

void dfs(vector<int> L){
  for(int i=0;i<(int)L.size();i++){
    if(used[L[i]])continue;
    used[L[i]]=++c;
     int minx=ww;
    for(int j=0;j<n;j++)
      if(y2[dd[j].s]<y3[L[i]]&&y3[L[i]]<y3[dd[j].s]&&minx>x0[dd[j].s])minx=x0[dd[j].s];

    vector<int> l;
    for(int j=0;j<n;j++)
      if(!used[dd[j].s]&&y3[dd[j].s]<=y3[L[i]]&&minx>=x1[dd[j].s])
	l.push_back(dd[j].s);
    if(l.size())dfs(l);
  }
}



int main(){
  bool f=0;
  while(cin>>n,n){
    if(f)cout<<endl;
    f=1;
    memset(used,0,sizeof(used));
    ww=c=0;
    for(int i=0,q,w,e,r;i<n;i++){
      cin>>q>>w>>e>>r;
      y2[i]=min(w,r);
      x0[i]=min(e,q);
      y3[i]=max(w,r);
      x1[i]=max(e,q);
      ww=max(ww,x1[i]);
      dd[i]=PP(P(p(x0[i],y2[i]),p(x1[i],y3[i])),i);
    }
    sort(dd,dd+n);
    vector<int> v;
    for(int i=0;i<n;i++)v.push_back(dd[i].s);
    dfs(v);
    for(int i=0;i<n;i++)cout<<used[i]<<endl;
  }
  return 0;
}