N=gets.to_i E=Array.new(N){[]} N.times{|n| a,b=gets.split.map{|i|i.to_i-1} E[a] << [b,n+1] E[b] << [a,n+1] } S=[[0,nil]] C=Array.new(N){false} max=[] loop{ #warn S.inspect n=S[-1][0] if C[n] s=S.index{|i|i[0]==n} (s ... S.size-1).each{|i| max << S[i][1] } break end if E[n].empty? S.pop C[S[-1][0]]=false next end nn,ne=E[n].shift next if S.size>=2&&nn==S[-2][0] C[n]=true S[-1][1]=ne S << [nn,nil] } puts max.size puts max*" "