#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps = 1.e-14;
const double INF = 1.e9;
struct TRAPEZ {
int x, y;
} v[1005];
double tg[1000005];
double panta( int x1, int y1, int x2, int y2 ) {
if ( fabs ( x1 - x2 ) < eps )
return INF;
return ((1.* y2 - y1 ) / ( 1.* x2 - x1 ) );
}
bool paralel ( double p1, double p2 ) {
if ( fabs ( p1 - p2 ) < eps )
return 1;
return 0;
}
int main() {
freopen ( "trapez.in", "r", stdin );
freopen ( "trapez.out", "w", stdout );
int n, i, j, k, x, y, l, my_max = 0;
scanf( "%d", &n );
for ( i = 1 ; i <= n ; ++ i ) {
scanf("%d%d", &x, &y);
v[i].x = x;
v[i].y = y;
}
k = 0;
for ( i = 1; i <= n; i ++)
for ( j = i + 1; j <= n; j ++)
tg[++k] = panta( v[i].x, v[i].y, v[j].x, v[j].y);
sort( tg + 1, tg + k + 1);
l = 1;
for ( i = 2; i <= k; i ++)
if ( paralel( tg[i], tg[i - 1] ) == 1 )
l ++;
else{
my_max = my_max + l * ( l - 1 ) / 2;
l = 1;
}
my_max = my_max + l * ( l - 1 ) / 2;
printf( "%d\n", my_max );
return 0;
return 0;
}