#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;
}
void argument_sort(vector<pair<long long, long long>>& a, int n) {
  int l = 0;
  for (int i = 0; i < n; ++i)
    if ((a[i].second > 0) || (a[i].second == 0 && a[i].first > 0))
      swap(a[i], a[l++]);
  sort(a.begin(), a.begin() + l,
       [](const pair<long long, long long>& u,
          const pair<long long, long long>& v) {
         return u.first * v.second - u.second * v.first > 0;
       });
  sort(a.begin() + l, a.begin() + n,
       [](const pair<long long, long long>& u,
          const pair<long long, long long>& v) {
         return u.first * v.second - u.second * v.first > 0;
       });
}
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<long long, long long>> a(5000);
    for (int j = 0; j < i; ++j) a[j] = make_pair(x[j] - x[i], y[j] - y[i]);
    for (int j = i + 1; j < n; ++j)
      a[j - 1] = make_pair(x[j] - x[i], y[j] - y[i]);
    argument_sort(a, s);
    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], a[k]) > 0) k++;
      ans -= combi(k - j - 1, 3);
    }
  }
  cout << ans << endl;
}
