#include<bits/stdc++.h>
#define N 105
using namespace std;
int m,I,J,A[N][N];
vector<int> ans;

void func1(int a,int b){
  int ay,ax,by,bx;
  for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
      if(a==A[i][j])ay=i,ax=j;
      if(b==A[i][j])by=i,bx=j;
    }
  A[ay][ax]=0;
  for(int i=ax+1;i<m;i++){
    if(!A[ay][i])break;
    for(int j=0;j<m;j++)
      if(!A[j][0]){
	A[j][0]=A[ay][i];
	A[ay][i]=0;
	break;
      }
  }

  for(int i=bx+1;i<m;i++)
    if(!A[by][i]){
      A[by][i]=a;
      break;
    }
}

void func2(int a,int b){
  int ay,ax,bx;
  for(int i=0;i<m;i++)
    for(int j=0;j<m;j++){
      if(a==A[i][j])ay=i,ax=j;
      if(b==A[i][j])bx=j;
    }
  if(ax>=bx)return;

  for(int i=ax;i<m&&A[ay][i];i++){
    for(int j=0;j<m;j++)
      if(!A[j][0]){
	A[j][0]=A[ay][i];
	A[ay][i]=0;
	break;
      }
  }
  func1(a,b);
}


void func3(int a){
  int ay,ax;
  for(int i=0;i<m;i++)
    for(int j=0;j<m;j++)
      if(a==A[i][j])ay=i,ax=j;

  if(!ax)return;
  
  for(int i=ax;i<m;i++){
    if(!A[ay][i])break;
    for(int j=0;j<m;j++)
      if(!A[j][0]){
	A[j][0]=A[ay][i];
	A[ay][i]=0;
	break;
      }
  }
}


bool check(int a,int b){
  int ay,by;
  for(int i=0;i<m;i++){
    for(int j=0;j<m;j++){
      if(a==A[i][j])ay=i;
      if(b==A[i][j])by=i;
    }
  }
  return ay==by;
}

int main(){

  while(1){
    cin>>m;
    if(!m)break;
    memset(A,0,sizeof(A));
    for(int i=0;i<m;i++)A[i][0]=i+1;

    while(1){
      cin>>I>>J;
      if(!I&&!J)break;
      if(I&&!J)func3(I);
      else if(!check(I,J))func1(I,J);
      else func2(I,J);
    }

    for(int i=0;i<m;i++){
      int cnt=0;
      for(int j=0;j<m;j++){
	if(!A[i][j])break;
	cnt++;
      }
      if(cnt)ans.push_back(cnt);
    }
    sort(ans.begin(),ans.end());
    for(int i=0;i<(int)ans.size();i++)cout<<ans[i]<<endl;
    cout<<"end"<<endl;
    ans.clear();
  }
  return 0;
}