#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long nm = 0;
  bool fh = true;
  char cw = getchar();
  for (; !isdigit(cw); cw = getchar()) fh ^= (cw == '-');
  for (; isdigit(cw); cw = getchar()) nm = nm * 10 + (cw - '0');
  return fh ? nm : -nm;
}
long long n, X[400200], Y[400200], x[400200], y[400200], d[400200];
long long ans;
int id[400200];
inline bool cmp(int a, int b) {
  if (d[a] != d[b]) return d[a] < d[b];
  return X[a] * Y[b] > X[b] * Y[a];
}
inline long long cross(int a, int b) { return x[a] * y[b] - x[b] * y[a]; }
inline long long C3(long long K) {
  if (K < 3) return 0ll;
  return K * (K - 1) * (K - 2) / 6;
}
inline void solve(int I) {
  int m = 0;
  for (int i = 1; i <= n; i++)
    if (i != I) {
      id[++m] = i, X[i] -= X[I], Y[i] -= Y[I];
      if (X[i] > 0 && Y[i] >= 0) d[i] = 1;
      if (X[i] <= 0 && Y[i] > 0) d[i] = 2;
      if (X[i] < 0 && Y[i] <= 0) d[i] = 3;
      if (X[i] >= 0 && Y[i] < 0) d[i] = 4;
    }
  sort(id + 1, id + m + 1, cmp), X[I] = Y[I] = 0;
  for (int i = 1; i <= m; i++) x[i] = X[id[i]], y[i] = Y[id[i]];
  for (int i = 1; i <= m; i++) x[i + m] = x[i], y[i + m] = y[i];
  int rs = 1;
  for (int i = 1; i <= m; i++) {
    rs = max(rs, i);
    while (rs + 1 < (i + m) && cross(i, rs + 1) > 0) ++rs;
    ans -= C3(rs - i);
  }
}
int main() {
  n = read();
  for (int i = 1; i <= n; i++) X[i] = read(), Y[i] = read();
  ans = n * ((n - 1) * (n - 2) * (n - 3) * (n - 4) / 24);
  for (int i = 1; i <= n; i++) solve(i);
  printf("%lld\n", ans);
  return 0;
}
