uses crt;
type
m=record
x,y:integer;
end;
var
h,g:text;
i,n,j,k,l,u:integer;
a:array[1..100] of m;
function f(x1,y1,x2,y2:integer):real;
begin
if (y2-y1=0) or (x2-x1=0) then f:=0 else
f:=(y2-y1)/(x2-x1)
end;
begin
assign(h,'trapez.in'); reset(h);
assign(g,'trapez.out'); rewrite(g);
readln(h, n);
for i:=1 to n do begin
read(a[i].x,a[i].y);
readln;
end;
for i:=1 to n do
for j:=i+1 to n do
for k:=j+1 to n do
for l:=k+1 to n do
if ((f(a[i].x,a[i].y,a[j].x,a[j].y)=f(a[k].x,a[k].y,a[l].x,a[l].y))and
(f(a[j].x,a[j].y,a[l].x,a[l].y)<>f(a[i].x,a[i].y,a[k].x,a[k].y))) or
((f(a[j].x,a[j].y,a[l].x,a[l].y)=f(a[i].x,a[i].y,a[k].x,a[k].y))and
(f(a[i].x,a[i].y,a[j].x,a[j].y)<>f(a[k].x,a[k].y,a[l].x,a[l].y)))
then u:=u+1;
writeln(g,u);
close(h);
close(g);
end.