class Point: def __init__(self, x, y): self.x = x self.y = y def __lt__(self, other): return (self.x, self.y) < (other.x, other.y) def cross(o, a, b): return (a.x - o.x) * (b.y - o.y) - (a.y - o.y) * (b.x - o.x) def convex_hull(points): points = sorted(points) lower = [] for p in points: while len(lower) >= 2 and cross(lower[-2], lower[-1], p) <= 0: lower.pop() lower.append(p) upper = [] for p in reversed(points): while len(upper) >= 2 and cross(upper[-2], upper[-1], p) <= 0: upper.pop() upper.append(p) return lower[:-1] + upper[:-1] def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 points = [] for _ in range(N): x = int(input[idx]) y = int(input[idx + 1]) points.append(Point(x, y)) idx += 2 hull = convex_hull(points) m = len(hull) if m < 4: print(0) return max_area = 0 for i in range(m): p = hull[i] for j in range(m): if i == j: continue q = hull[j] dx = q.x - p.x dy = q.y - p.y max_cross = -float('inf') min_cross = float('inf') for r in hull: cr = (r.x - p.x) * dy - (r.y - p.y) * dx if cr > max_cross: max_cross = cr if cr < min_cross: min_cross = cr current = (max_cross - min_cross) // 2 if current > max_area: max_area = current print(max_area * 2) if __name__ == '__main__': main()