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*" "