#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
ostream& operator<<(ostream& os, const pair<T1, T2>& a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}
template <typename T>
inline T outprod(pair<T, T> a, pair<T, T> b) {
  return a.first * b.second - a.second * b.first;
}
inline long long combi(long long a, long long b) {
  if (b > a) return 0;
  long long ret = 1;
  for (int i = 0; i < b; ++i) ret *= a - i;
  for (int i = 0; i < b; ++i) ret /= i + 1;
  return ret;
}
int main() {
  long long n;
  cin >> n;
  array<int, 2500> x, y;
  for (int i = 0; i < n; ++i) scanf("%d%d", &x[i], &y[i]);
  long long ans = n * combi(n - 1, 4);
  for (int i = 0; i < n; ++i) {
    int s = n - 1;
    vector<pair<double, pair<long long, long long>>> a(2 * n - 2);
    for (int j = 0; j < i; ++j)
      a[j] = (make_pair(0, make_pair(x[j] - x[i], y[j] - y[i])));
    for (int j = i + 1; j < n; ++j)
      a[j - 1] = (make_pair(0, make_pair(x[j] - x[i], y[j] - y[i])));
    for (int i = 0; i < n; ++i)
      a[i].first = atan2(a[i].second.second, a[i].second.first);
    sort(a.begin(), a.begin() + s,
         [](const pair<double, pair<long long, long long>>& u,
            const pair<double, pair<long long, long long>>& v) {
           return (abs(u.first - v.first) < 1e-12
                       ? outprod(u.second, v.second) > 0
                       : u.first < v.first);
         });
    for (int i = 0; i < s; ++i) a[i + s] = a[i];
    int k = 1;
    for (int j = 0; j < s; ++j) {
      k = max(k, j + 1);
      while (outprod(a[j].second, a[k].second) > 0) k++;
      ans -= combi(k - j - 1, 3);
    }
  }
  cout << ans << endl;
}
