#include<bits/stdc++.h>
using namespace std;
#define int long long
struct pile{
  int p,o;
  pile(){}
  pile(int v){p=v;o=-1;}
};
pile p[300];
int h(int v){
  if(p[v].o==-1) return 1;
  return h(p[v].o)+1;
}
void tf(int v){
  if(p[v].p!=v){
    int i;
    for(i=p[v].p;~i&&p[i].o!=v;i=p[i].o);
    p[i].o=-1;
  }
  p[v].p=v;
  if(p[v].o!=-1) tf(p[v].o);
  p[v].o=-1;
}
void ta(const int a,const int b){
  //cout<<a<<"-"<<b<<endl;
  //cout<<p[a].o<<"+"<<p[b].o<<endl;
  assert(a!=b);
  if(p[b].o==-1){
    p[a].p=p[b].p;
    p[b].o=a;
    return;
  }
  ta(a,p[b].o);
}
signed main(){
  int m;
  while(cin>>m,m){
    for(int i=0;i<300;i++) p[i]=pile(i);
    int a,b;
    while(cin>>a>>b,a||b){
      //cout<<a<<":"<<b<<endl;
      a--;b--;
      if(a==b) continue;
      if(b<0){
	if(p[a].p!=a) tf(a);   
      }else{
	if(p[a].p==p[b].p){
	  if(h(a)<h(b)) continue;
	  tf(a);
	  //cout<<a<<" "<<b<<":"<<p[a].p<<" "<<p[b].p<<endl;
	  ta(a,b);
	}else{
	  tf(a);
	  //cout<<a<<" "<<b<<":"<<p[a].p<<" "<<p[b].p<<endl;
	  ta(a,b);
	}
      }
    }
    //puts("OK");
    vector<int> v;
    for(int i=0;i<m;i++){
      if(p[i].p==i){
	//cout<<i<<endl;
	//cout<<h(p[i])<<endl;
	v.push_back(h(i));
      }
    }
    sort(v.begin(),v.end());
    for(int i=0;i<(int)v.size();i++) cout<<v[i]<<endl;
    cout<<"end"<<endl;
  }
  return 0;
}