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

def findDist(p1, p2, p3):
	x1, y1 = p1
	x2, y2 = p2
	x3, y3 = p3
	area = abs(((x1*(y2-y3)) + (x2*(y3-y1)) + (x3*(y1-y2)))/2)
	return area


# Function to call the actual solution
def solution(li):
	co = 0
	ma = set()
	for i in range(len(li)):
		for j in range(len(li)):
			for k in range(len(li)):
				if i != j and j != k and i != k and tuple(sorted([i, j, k])) not in ma:
					area = findDist(li[i], li[j], li[k])
					if int(area) != 0:
						co += 1
						ma.add(tuple(sorted([i, j, k])))
	# print(ma)
	return 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()