n = gets.to_i
balls = []
n.times { balls << gets.split.map(&:to_i) }
ans = 0

until balls.size < 3
  x, y = balls.shift
  inclinations = {}
  inclination_count = Hash.new(0)
  balls.each_with_index do |(x2, y2), i2|
    x_move = x2 - x
    y_move = y2 - y
    gcd = x_move.gcd(y_move)
    x_move /= gcd
    y_move /= gcd
    inclination = y_move.to_f / x_move.to_f
    balls[i2][2] = inclination
    inclination_count[inclination] += 1
  end
  max, _ = inclination_count.max
  balls.delete_if { |x, y, i| i == max }
  ans += 1
end

ans += 1 if balls.size > 0
puts ans
