// AOJ 1379: Parallel Lines
// 2017.12.20 bal4u@uu

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

#define INF 1e7
#define EPS 1e-7
#define EQ(a,b)   (fabs((a)-(b))<=EPS)

typedef struct { int n; double k; } T;
T tbl[300]; int n;

int x[16], y[16];
double k[16][16];
char used[16];

int cmp(T *a, T *b) { return b->n - a->n; }

int main()
{
	int m, i, j, u, v, p, cnt, ans;
	double t;

	scanf("%d", &m);
	for (i = 0; i < m; i++) scanf("%d%d", x+i, y+i);
	for (i = 0; i < m; i++) for (j = i+1; j < m; j++) {
		if (x[i] == x[j]) t = INF;
		else t = ((double)(y[i]-y[j])) / (x[i]-x[j]);
		k[i][j] = k[j][i] = t;
	}

	n = 0;
	for (i = 0; i < m; i++) for (j = i+1; j < m; j++) {
		t = k[i][j];
		for (u = i+1; u < m; u++) if (u != j) {
			for (v = u+1; v < m; v++) {
				if (v != j && EQ(k[u][v], t)) {
					for (p = 0; p < n; p++) {
						if (EQ(tbl[p].k, t)) { tbl[p].n++; break; } 
					}
					if (p == n) tbl[p].n = 2, tbl[p].k = t, n++;
				}
			}
		}
	}
	if (!n) { puts("0"); return 0; }

	qsort(tbl, n, sizeof(T), cmp);
	ans = 0;
	for (i = 0; i < n; i++) {
		cnt = 0;
		for (u = 0; u < m; u++) {
			if (used[u]) continue;
			for (v = u+1; v < m; v++) {
				if (used[v]) continue;
				if (EQ(k[u][v], tbl[i].k)) {
					cnt++;
					used[u] = used[v] = 1;
					break;
				}
			}
		}
		ans += cnt*(cnt-1)/2;
	}
	printf("%d\n", ans);
	return 0;
}