n = gets.to_i xy = [] n.times { xy << gets.split(" ").map{|s| s.to_i} } dist = [] max = 0 0.upto(n-1) {|i| xi, yi = xy[i] (i+1).upto(n-1) {|j| xj, yj = xy[j] d = (xi-xj)**2 + (yi-yj)**2 dist << [d, i, j] } } dist.sort_by!{|x| x[0]} alive = Array.new(n, true) alive_n = n remove = 0 dist.each {|d, i, j| if i == 0 and alive[j] then remove += 1 alive[j] = false alive_n -= 1 elsif alive[i] and alive[j] then alive[i] = alive[j] = false alive_n -= 0 end break if alive_n == 1 } puts remove