#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
const int N = 2001;
int n;
long long fn = 0;
struct pnt {
  long long first, second;
  double ang;
  pnt() {}
  pnt(long long _x, long long _y) { first = _x, second = _y; }
  void scan() { scanf("%lld%lld", &first, &second); }
  pnt operator-(const pnt &rhs) const {
    return pnt(first - rhs.first, second - rhs.second);
  }
  double angle() {
    double ang = atan2(second, first);
    return ang;
  }
  long long cross(pnt a) { return first * a.second - a.first * second; }
  void print() { printf("%lld %lld\n", first, second); }
  bool operator<(const pnt &rhs) const { return ang < rhs.ang; }
};
pnt p[N], src, org[N];
long long nc2(long long first) {
  if (first <= 1) return 0;
  return (first * (first - 1)) / 2;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; ++i) p[i].scan();
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) org[j] = p[j];
    swap(org[i], org[0]);
    src = org[0];
    for (int j = 1; j < n; ++j) {
      org[j].ang = (org[j] - org[0]).angle();
    }
    sort(org + 1, org + n);
    int idx = 2, lft = 0;
    for (int p = 1; p < n; ++p) {
      while (1) {
        pnt m1 = org[idx] - org[0];
        pnt m2 = org[p] - org[0];
        if (m1.cross(m2) <= 0) {
          idx++;
          lft++;
          if (idx == n) idx = 1;
        } else
          break;
        if (idx == p) break;
      }
      fn += nc2(n - 2 - lft) * nc2(lft);
      lft--;
    }
  }
  cout << fn / 2 << endl;
  return 0;
}
