#include <bits/stdc++.h>
using namespace std;
const long long N = 2504;
long long n, m, res;
struct T {
  long long x, y;
};
T t[N];
long long ccw(pair<long long, long long> a, pair<long long, long long> b) {
  return a.first * b.second - a.second * b.first;
}
bool lf(const pair<long long, long long>& a,
        const pair<long long, long long>& b) {
  bool bh1 = (a < make_pair(0ll, 0ll));
  bool bh2 = (b < make_pair(0ll, 0ll));
  if (bh1 != bh2) return bh1 < bh2;
  return ccw(a, b) > 0;
}
long long C(long long a, long long b) {
  if (a > b || b < 0) return 0;
  long long tich = 1;
  for (long long i = b - a + 1; i <= b; i++) tich *= i;
  long long tich1 = 1;
  for (long long i = 1; i <= a; i++) tich1 *= i;
  return tich / tich1;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  for (long long i = 1; i <= n; i++) cin >> t[i].x >> t[i].y;
  for (long long i = 1; i <= n; i++) {
    vector<pair<long long, long long> > vec;
    for (long long j = 1; j <= n; j++) {
      if (i != j) {
        vec.push_back(make_pair(t[j].x - t[i].x, t[j].y - t[i].y));
      }
    }
    sort(vec.begin(), vec.end(), lf);
    long long j = 0;
    for (long long p = 0; p < (long long)vec.size(); p++) {
      while (j < p + (long long)vec.size() &&
             ccw(vec[p], vec[j % (long long)vec.size()]) >= 0)
        j++;
      res += C(3, j - p - 1);
    }
  }
  cout << C(5, n) * 5 - res;
}
