#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define Nmax 1510
#define eps 1e-6
#define pb push_back
#define mp make_pair
#define file_in "triang.in"
#define file_out "triang.out"
#define f first
#define s second
vector< pair <double,double > > v;
double x,y;
int n;
double x1,x2,xx1,xx2,xx3,xx4,y3,y2,yy1,yy2,delta,m,d,x4,y4;
int nrtri;
double raza,unghi,q1,q2,q,q3,q4;
int min(double a, double b)
{
return (a<b && fabs(b-a)>eps);
}
int max(double a, double b)
{
return (a>b && fabs(b-a)>eps);
}
int bs(double x, double y, int ls, int ld)
{
int mij=(ls+ld)>>1;
while (ls<=ld)
{
if (min(v[mij].f,x) || min(v[mij].f,y))
{
ls=mij+1;
mij=(ls+ld)>>1;
}
else
if (max(v[mij].f,x) || max(v[mij].s,y))
{
ld=mij-1;
mij=(ls+ld)>>1;
}
else//e bun
{
return 1;
}
}
//nu am gasit
return 0;
}
int main()
{
int i,j;
freopen(file_in,"r",stdin);
scanf("%d", &n);
for (i=0;i<n;++i)
{
scanf("%lf %lf", &x, &y);
v.pb(mp(x,y));
}
fclose(stdin);
sort(v.begin(),v.end());//sortam coordonatele
//for (i=0;i<n;++i)
// printf("%.lf %.lf\n", v[i].f, v[i].s);
//cautare binara
for (i=0;i<n-1;++i)
for (j=i+1;j<n;++j)
{
x1=v[i].f;
x2=v[j].f;
y3=v[i].s;
y2=v[j].s;
//un triunghi e echilateral daca toate unghiurile au 60 grade
x4=x2-x1;
y4=y2-y3;
q=M_PI/3.0;
unghi=atan2(y4,x4);
raza=sqrt(x4*x4+y4*y4);
//sin 60 grade= rad(3)/2=0.9 aproximativ
//q1=cos(unghi)*0.9+sin(unghi)*0.5;
/*q1=cos(unghi-q);
q2=sin(unghi-q);
q3=cos(unghi+q);
q4=sin(unghi+q);*/
//cos 60 grade = 1/2=0.5
//q2=cos(unghi)*0.5-sin(unghi)*0.9;
//solutiile
xx1=x1+raza*cos(unghi-q);
yy1=y3+raza*sin(unghi-q);;
//printf("%.lf %lf\n", xx1,yy1);
nrtri+=bs(xx1,yy1,j+1,n-1);
xx1=x1+raza*cos(unghi+q);
yy1=y3+raza*sin(unghi+q);
nrtri+=bs(xx1,yy1,j+1,n-1);
}
freopen(file_out,"w",stdout);
printf("%d", nrtri);
fclose(stdout);
return 0;
}