#include <bits/stdc++.h>
using namespace std;
const int N = 4e3 + 5;
long long ans;
int n, m;
struct point {
  int x, y, id;
  point() {}
  point(int x, int y) : x(x), y(y) {}
  void input() { scanf("%d %d", &x, &y); }
  point operator-(const point &a) { return point(x - a.x, y - a.y); }
  long long operator^(const point &a) {
    return (long long)x * a.y - (long long)y * a.x;
  }
  bool operator<(const point &a) const {
    int t0 = (y < 0 || y == 0 && x < 0);
    int t1 = (a.y < 0 || a.y == 0 && a.x < 0);
    if (t0 != t1) return t0 < t1;
    return (long long)x * a.y - (long long)y * a.x >= 0;
  }
} p[N], q[N];
int main() {
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    p[i].input();
    p[i].id = i;
  }
  for (int i = 1; i <= n; ++i) {
    m = 0;
    for (int j = 1; j <= n; ++j) {
      if (i == j) continue;
      q[++m] = p[j] - p[i];
      q[m].id = p[j].id;
    }
    sort(q + 1, q + 1 + m);
    int jj = 1;
    for (int j = m + 1; j <= m + m; ++j) q[j] = q[j - m];
    for (int j = 1; j <= m; ++j) {
      jj = max(jj, j);
      while ((q[j] ^ q[jj + 1]) > 0) ++jj;
      if (q[j].id > i) {
        int cnt = jj - j;
        ans +=
            (long long)cnt * (cnt - 1) * (n - 2 - cnt) * (n - 2 - cnt - 1) / 2;
      }
    }
  }
  cout << ans / 2;
}
