#include <bits/stdc++.h>
using namespace std;
inline int gi() {
  char c;
  int x = 0, f = 1;
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') f = -1;
  for (; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + c - '0';
  return x * f;
}
const long long N = 2018;
long long ans;
int c[2], t[N];
struct poll {
  int x, y, id;
  double ang;
} a[N], b[N];
const double pi = acos(-1.0);
double calc(long long y, long long x) {
  if (atan2(y, x) <= 0) return atan2(y, x) + pi;
  return atan2(y, x);
}
bool cmp(poll a, poll b) {
  if (a.ang == b.ang) return a.x < b.x;
  return a.ang < b.ang;
}
int main() {
  int n = gi();
  for (int i = 1; i <= n; ++i) a[i].x = gi(), a[i].y = gi(), a[i].id = i;
  for (int i = 1; i <= n; ++i) {
    long long tl = 0, tr = 0, ind = 0;
    for (int j = 1; j <= n; ++j) {
      if (i != j) b[++ind] = (poll){a[j].x - a[i].x, a[j].y - a[i].y, j};
      b[ind].ang = calc(b[ind].y, b[ind].x);
    }
    sort(b + 1, b + n, cmp);
    c[0] = c[1] = 0;
    for (int j = 1; j <= n; ++j)
      if (j != i)
        (a[j].y < a[i].y || (a[j].y == a[i].y && a[j].x > a[i].x))
            ? ++c[t[j] = 0]
            : ++c[t[j] = 1];
    for (int j = 1; j < n; ++j) {
      --c[t[b[j].id]];
      ans += (long long)((long long)c[0] * (c[0] - 1) / 2 *
                         ((long long)c[1] * (c[1] - 1) / 2));
      ++c[t[b[j].id] ^ 1];
    }
  }
  printf("%lld\n", ans >> 1);
}
