n=gets.to_i
vs=n.times.map{[]}
$<.each.with_index{|s,i|
  a,b=s.split.map{|t| t.to_i-1 }
  vs[a].push([b,i])
  vs[b].push([a,i])
}
k=vs.map(&:size).max
es=[]
f=->cv,pv,pc{
  c=1
  vs[cv].each{|v,e|
    next if v==pv
    c+=1 if c==pc
    es[e]=c
    f[v,cv,c]
    c+=1
  }
}
f[0,-1,-1]
puts k,es