#include <cstdio>
#include <algorithm>
#include <cmath>
#define FIN "triang.in"
#define FOUT "triang.out"
#define MAX 2000
#define FOR(l,h,i) for(i=l;i<h;++i)
#define sqr(a) (a)*(a)
#define eps (double)0.0001
#define debug(x,y) printf("%lf %lf\n", x,y);
#define off 10005
struct point {
double x, y;
} A[MAX];
long H[30800];
long n, nr;
int cmp(point A, point B) {
return A.x<B.x || ( A.x==B.x && A.y<B.y ) ;
}
double abs(double x) {
if ( x<0 )
return -x;
return x;
}
bool bs(double x, double y) {
long f = (long)floor(x);
if ( -x-10000>eps || x-10000>eps )
return false;
// long st = H[f+off]>0?H[f+off]-1:0, dr = n-1;
/* if ( st == -1 )
return false;*/
long st=0, dr=n-1;
while ( st<=dr ) {
long m = (st+dr)/2;
if ( abs(A[m].x - x) < eps ) { // x e fixat
if ( abs(A[m].y-y) < eps )
return true;
if ( A[m].y-y>eps )
dr = m-1;
if ( y-A[m].y>eps )
st = m+1;
}
if ( A[m].x-x > eps )
dr = m-1;
if ( x-A[m].x > eps )
st = m+1;
}
return false;
}
int main() {
long i,j;
freopen(FIN, "r", stdin);
scanf("%ld", &n);
FOR (0,n,i)
scanf("%lf %lf", &A[i].x, &A[i].y);
fclose(stdin);
std::sort(A, A+i, cmp);
FOR (-10005,10005,i)
H[i+off] = -1;
FOR (0,n,i) {
long f = (long)floor(A[i].x);
if ( H[f+off]==-1 )
H[f+off] = i;
}
double a,b,c, alpha, cp, xp, yp, kns = sqrt(3)/2, l;
FOR (0,n,i)
FOR (i+1,n,j)
if (i-j) {
point m = { (A[i].x+A[j].x)/2, (A[i].y+A[j].y)/2 };
a = A[j].y-A[i].y;
b = A[i].x-A[j].x;
c = A[i].y*A[j].x-A[i].x*A[j].y;
l = sqrt( sqr(A[i].x-A[j].x)+sqr(A[i].y-A[j].y) );
alpha = l*kns*sqrt(a*a+b*b);
cp = a*m.y-b*m.x;
xp = (a*alpha-cp*b-a*c)/(a*a+b*b);
if ( b )
yp = (alpha-c-a*xp)/b;
else
yp = cp / a;
// search
if ( bs(xp, yp) )
nr ++;
alpha*=-1;
xp = (a*alpha-cp*b-a*c)/(a*a+b*b);
if ( b )
yp = (alpha-c-a*xp)/b;
else
yp = cp / a;
// search
if ( bs(xp, yp) )
nr ++;
}
freopen(FOUT, "w", stdout);
printf("%ld\n", nr/3);
fclose(stdout);
}