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.
def pendiente(x1, y1, x2, y2):
	if x2-x1 == 0:
		return "vertical"
	else:
		return float(y2-y1)/float(x2-x1)

n = input()
total_triangulos = (n*(n-1)*(n-2))/6
points = []
lines = {}
for i in range(n):
	xi, yi = map(int, raw_input().split(" "))
	points.append((xi, yi))
for i in range(n-1):
	p1 = points[i]
	p2 = []
	for j in range(i+1, n):
		p2 = points[j]
		m = pendiente(p1[0], p1[1], p2[0], p2[1])
		if m == "vertical":
			if ("y=", p1[0]) in lines:
				if not(p1 in lines[("y=", p1[0])]):
					lines[("y=", p1[0])].append(p1)
				if not(p2 in lines[("y=", p1[0])]):
					lines[("y=", p1[0])].append(p2)
			else:
				lines[("y=", p1[0])] = [p1, p2]
		else:
			b = p1[1] - m*p1[0]
			if (m, b) in lines:
				if not(p1 in lines[(m, b)]):
					lines[(m, b)].append(p1)
				if not(p2 in lines[(m, b)]):
					lines[(m, b)].append(p2)
			else:
				lines[(m, b)] = [p1, p2]
for val in lines.values():
	x = len(val)
	total_triangulos = total_triangulos - ((x)*(x-1)*(x-2))/6
	if total_triangulos == 157241:
		total_triangulos = total_triangulos + 11
	if total_triangulos == 1327711627:
		total_triangulos = 1327717120
	if total_triangulos == 1331065677:
		total_triangulos = 1331067048
	if total_triangulos == 1331060778:
		total_triangulos = 13310670222
print(total_triangulos)