class Array
  # nums must be sorted
  def delete_ats(nums)
    nums.each_with_index do |num, index|
      self.delete_at(num - index)
    end
  end
end

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

until balls.size < 3
  deletable = []
  balls.each_with_index do |(x, y), i|
    inclination_count = Hash.new(0)
    balls.each_with_index do |(x2, y2), i2|
      next if i == 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_by { |_, v| v }
    tmp = [i]
    balls.each_with_index do |(x3, y3, inc3), i3|
      next if i == i3
      tmp << i3 if max == inc3
    end
    deletable << tmp
  end
  deletes = deletable.max_by { |a| a.size }
  balls.delete_ats(deletes)
  ans += 1
end

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