a=gets.to_i.times.map{gets.split.map(&:to_i).sort}.sort{|a,b|b.inject(:*)<=>a.inject(:*)} F=->a,i,l,c,m{ return m[i] if m[i] return c if i>=a.size r=c (i...a.size).each{|j| v=a[j] if v[0]r end } m[i]=r } p F[a,0,[10**8,10**8,10**8],0,{}]