#input of int(split by space) def get_i() return gets.chomp.split(" ").map(&:to_i) end #input of float(split by space) def get_f() return gets.chomp.split(" ").map(&:to_f) end #input of string(split by space) def get() return gets.chomp.split(" ") end #input of string(split per one character) def get_nsp() return gets.chomp.split("") end #yes or no decision def yn_judge(bool,y="Yes",n="No") return bool ? y : n end #create of array def array(size1,init=nil,size2=-1) if size2==-1 return Array.new(size1){init} else return Array.new(size2){Array.new(size1){init}} end end def max(a,b) return a>b ? a : b end def min(a,b) return a>b ? b : a end INF=Float::INFINITY N=gets.to_i xy=array(N) N.times do|i| xy[i]=get_f end xy.sort!{|a,b| a[0]<=>b[0]} #x0=xy.count{|a| a[0].zero?} #y0=xy.count{|a| a[1].zero?} ans=max(x0,y0) (N-1).times do|i| kind={} (i+1).upto(N-1) do|j| next if (xy[i+1][1]-xy[i][1]).zero? val=(xy[j][0]-xy[i][0])/(xy[j][1]-xy[i][1]) kind[val]=0 if kind[val].nil? kind[val]+=1 end kind.each do|k,v| ans=v+1 if ans