#include <bits/stdc++.h>
using namespace std;
int n;
struct p {
  int x, y;
  p operator-(p p1) {
    p1.x -= x;
    p1.y -= y;
    return p1;
  }
};
long long cross(p p1, p p2) { return 1LL * p1.x * p2.y - 1LL * p2.x * p1.y; }
vector<p> vec;
p cen;
bool q1(p p1) {
  if (p1.x == cen.x) return p1.y > cen.y;
  return p1.x > cen.x;
}
bool comp(p p1, p p2) { return (cross(p2 - cen, p1 - cen) > 0); }
long long nc2(long long x) { return (x * (x - 1)) / 2; }
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n;
  vec.resize(n);
  for (int i = 0; i < n; ++i) {
    cin >> vec[i].x >> vec[i].y;
  }
  long long ans = 0;
  for (int ii = 0; ii < n; ++ii) {
    cen = vec[ii];
    vector<p> v1, v2;
    for (int i = 0; i < n; ++i) {
      if (i == ii) continue;
      if (q1(vec[i]))
        v1.push_back(vec[i]);
      else
        v2.push_back(vec[i]);
    }
    sort(v1.begin(), v1.end(), comp);
    sort(v2.begin(), v2.end(), comp);
    for (auto i : v2) v1.push_back(i);
    int i1 = 1, n1 = v1.size();
    for (int i = 0; i < n1; ++i) {
      while (i1 != i && cross(v1[i1] - cen, v1[i] - cen) > 0) {
        ++i1;
        if (i1 >= n1) i1 -= n1;
      }
      int num;
      if (i1 > i)
        num = i1 - i - 1;
      else
        num = i - i1;
      ans += 1LL * nc2(num) * nc2(n - 2 - num);
    }
  }
  cout << ans / 2;
  return 0;
}
