#include <bits/stdc++.h>
using namespace std;
pair<int, int> p[2020];
int n, od[2020], pos[2020];
struct st {
  int a, b;
  pair<long long, long long> p;
};
vector<st> vp;
long long ccw(pair<long long, long long> a, pair<long long, long long> b) {
  return a.first * b.second - a.second * b.first;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &p[i].first, &p[i].second);
  for (int i = 0; i < n; i++) od[i] = i;
  sort(od, od + n, [](int l, int r) { return p[l] < p[r]; });
  for (int i = 0; i < n; i++) pos[od[i]] = i;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) {
      int a = i, b = j;
      if (p[a].first < p[b].first ||
          p[a].first == p[b].first && p[a].second < p[b].second)
        swap(a, b);
      long long x = p[a].first - p[b].first, y = p[a].second - p[b].second;
      vp.push_back({a, b, {x, y}});
    }
  sort(vp.begin(), vp.end(), [&](st l, st r) { return ccw(l.p, r.p) < 0; });
  long long res = 0;
  for (auto &pa : vp) {
    int a = pa.a, b = pa.b;
    swap(od[pos[a]], od[pos[b]]);
    swap(pos[a], pos[b]);
    if (pos[a] > pos[b]) swap(a, b);
    res +=
        pos[a] * (pos[a] - 1) / 2LL * (n - 1 - pos[b]) * (n - 2 - pos[b]) / 2;
  }
  printf("%lld", res);
  return 0;
}
