import sys input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 998244353 from fractions import Fraction as frac class Line: def __init__(self, a: frac, b:frac, c:frac): self.a = a self.b = b self.c = c def __eq__(self, other): return (self.a == other.a and self.b == other.b and self.c == other.c) def __hash__(self): return hash((self.a, self.b, self.c)) def __str__(self): return str((self.a, self.b, self.c)) class Point: def __init__(self, x: frac, y: frac): self.x = x self.y = y def __eq__(self, other): return (self.x == other.x and self.y == other.y) def __hash__(self): return hash((self.x, self.y)) def __lt__(self, other): if(self.x == other.x): return (self.y < other.y) return (self.x < other.x) def __str__(self): return str((self.x, self.y)) def calcLine(self, other): x1 = self.x; y1 = self.y x2 = other.x; y2 = other.y if(x1 == x2): return Line(frac(1), frac(0), x1) a = frac((y1 - y2), (x1 - x2)) c = y1 - a * x1 return Line(-a, frac(1), c) def intersection(self, other) -> Point: p = self.a * other.b - other.a * self.b if(p == frac(0)): return None q = other.b * self.c - self.b * other.c x = q / p y = (other.c - other.a * x) / other.b if(self.b == 0) else (self.c - self.a * x) / self.b return Point(x, y) import sys input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) INF = 2 ** 63 - 1 mod = 998244353 n = ii() XY = [li() for _ in range(n)] if n == 1: print(1) exit() lines = set() p = Point(1, 2) for i in range(n): x1, y1 = XY[i] p1 = Point(x1, y1) for j in range(n): x2, y2 = XY[j] p2 = Point(x2, y2) lines.add(p1.calcLine(p2)) S = set() for l1 in lines: for l2 in lines: if intersection(l1, l2) is not None: S.add(intersection(l1, l2)) S = list(S) m = len(S) mask = [[0] * m for _ in range(m)] for i in range(m): p1 = S[i] for j in range(m): p2 = S[j] mm = 0 if i == j: for k in range(n): pn = Point(*XY[k]) if p1 == pn: mm |= 1<