#include<cstdio>                                                                                   
#include<cstring>                                                                                  
#include<algorithm>                                                                                
#include<vector>                                                                                   
using namespace std;                                                                               

int n;                                                                                             
vector<int> G[100];                                                                              
bool D[100];                                                                                       
int r,k;

void solve(int m)
{
    D[m]=1;
    r=max(r,++k);
    for(vector<int>::iterator it=G[m].begin();it!=G[m].end();it++){                              
        if(!D[*it]){                                                                               
            solve(*it);                                                                 
        }                                                                                          
    }                                                                                              
    --k;
    D[m]=0;
}                                                                                                  

int main()
{
    for(int i=0;i<100;i++)G[i].reserve(100);
    while(scanf("%d",&n),n){
        r=0;
        for(int i=0;i<100;i++)G[i].clear();
        while(n--){
            int a,b;
            scanf("%d%d",&a,&b);
            G[a-1].push_back(b-1);
            G[b-1].push_back(a-1);
        }
        for(int i=0;i<100;i++){
            solve(i);
        } 
        printf("%d\n",r);
    }
}