#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2500 + 10;
int n;
pair<int, int> p[MAXN];
pair<int, int> sec[MAXN];
int sz;
int half(pair<int, int> p) {
  assert(p.first || p.second);
  return p.second > 0 || (p.second == 0 && p.first < 0);
}
long long dot(pair<int, int> a, pair<int, int> b) {
  return 1ll * a.first * b.first + 1ll * a.second * b.second;
}
long long cross(pair<int, int> a, pair<int, int> b) {
  return 1ll * a.first * b.second - 1ll * a.second * b.first;
}
int nxt(int x) { return x + 1 == sz ? 0 : x + 1; }
void solve() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> p[i].first >> p[i].second;
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    sz = 0;
    for (int j = 0; j < n; j++)
      if (i ^ j)
        sec[sz++] = {p[j].first - p[i].first, p[j].second - p[i].second};
    sort(sec, sec + sz, [](pair<int, int> a, pair<int, int> b) {
      return make_tuple(half(a), 0, dot(a, b)) <
             make_tuple(half(b), cross(a, b), dot(a, b));
    });
    long long temp = 0;
    int cur = 0;
    for (int j = 0; j < sz; j++) {
      if (cur == j) cur = nxt(j);
      while (cur != j && cross(sec[j], sec[cur]) > 0) cur = nxt(cur);
      int ln = cur > j ? cur - j : sz - (j - cur);
      temp += 1ll * (ln - 1) * (ln - 2) * (ln - 3) / 6;
    }
    ans += 1ll * (n - 1) * (n - 2) * (n - 3) * (n - 4) / 24 - temp;
  }
  cout << ans << "\n";
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int te = 1;
  for (int w = 1; w <= te; w++) {
    solve();
  }
  return 0;
}
