#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> operator-(const pair<long long, long long>& a,
                                     const pair<long long, long long>& b) {
  return pair<long long, long long>(a.first - b.first, a.second - b.second);
}
long long operator^(const pair<long long, long long>& a,
                    const pair<long long, long long>& b) {
  return a.first * b.second - b.first * a.second;
}
int q(const pair<long long, long long>& a) {
  if (a.first >= 0 && a.second >= 0) return 1;
  if (a.first < 0 && a.second >= 0) return 2;
  if (a.first < 0 && a.second < 0) return 3;
  return 4;
}
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<pair<long long, long long> > a(n);
  for (int i = 0; i < n; ++i) cin >> a[i].first >> a[i].second;
  long long ans = 0;
  for (int i = 0; i < n; ++i) {
    vector<pair<long long, long long> > b;
    for (int j = 0; j < n; ++j)
      if (j != i) b.push_back(a[j] - a[i]);
    sort(begin(b), end(b),
         [&](const pair<long long, long long>& first,
             const pair<long long, long long>& second) {
           return q(first) != q(second) ? q(first) < q(second)
                                        : (first ^ second) > 0;
         });
    int w = 0, r = 0;
    for (int j = 0; j < b.size(); ++j, --w) {
      while (((b[j] ^ b[r]) >= 0) && w < (int)b.size())
        r = (r + 1) % b.size(), ++w;
      long long k1 = w - 1;
      long long k2 = (int)b.size() - 1 - k1;
      ans += (k1 * (k1 - 1) / 2) * (k2 * (k2 - 1) / 2);
    }
  }
  cout << ans / 2 << '\n';
}
