Vanya got bored and he painted *n* distinct points on the plane. After that he connected all the points pairwise and saw that as a result many triangles were formed with vertices in the painted points. He asks you to count the number of the formed triangles with the non-zero area.
The first line contains integer *n* (1 ≤ *n* ≤ 2000) — the number of the points painted on the plane. 

Next *n* lines contain two integers each *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub> ( - 100 ≤ *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub> ≤ 100) — the coordinates of the *i*-th point. It is guaranteed that no two given points coincide.
import random, math, sys
from copy import deepcopy as dc
from bisect import bisect_left, bisect_right
from collections import Counter

input = sys.stdin.readline



# Function to call the actual solution
def solution(li):
	n = len(li)
	co = (n * (n-1) *(n-2))/6
	for i in range(len(li)):
		x, y = li[i]
		ma = {}
		for j in range(i+1, n):
			x1, y1 = li[j]
			if x1-x == 0:
				slope = 1e999
			else:
				slope = (y1-y)/(x1-x)
			if slope not in ma:
				ma[slope] = 0
			co -= ma[slope]
			ma[slope] += 1
	return int(co)
# Function to take input
def input_test():
	li1 = []
	for _ in range(int(input())):
		# n = int(input())
		# x, y = map(int, input().strip().split(" "))
		# a, b, c = map(int, input().strip().split(" "))
		li = list(map(int, input().strip().split(" ")))
		li1.append(li)
	out = solution(li1)
	print(out)

# Function to test my code
def test():
	pass


input_test()
# test()