#include <bits/stdc++.h>
using namespace std;
const int N = 2010;
struct Pos {
  long long x, y;
  Pos operator-(const Pos& rh) const { return Pos{x - rh.x, y - rh.y}; }
} pos[N], rel[N * 2];
long long cross(Pos& a, Pos& b) { return a.x * b.y - a.y * b.x; }
bool cmp(Pos& a, Pos& b) {
  if (a.y * b.y > 0) {
    return cross(a, b) > 0;
  } else if (a.y * b.y < 0) {
    return a.y > 0;
  } else {
    if (a.y == 0 && b.y < 0)
      return true;
    else if (a.y == 0 && b.y > 0)
      return a.x > 0;
    else if (b.y == 0 && a.y < 0)
      return false;
    else
      return b.x < 0;
  }
}
long long comb(int m) {
  if (m < 2) return 0;
  return (long long)m * (m - 1) / 2;
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    int x, y;
    cin >> x >> y;
    pos[i] = Pos{x, y};
  }
  long long ans = 0;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
      rel[j] = pos[j] - pos[i];
    }
    swap(rel[0], rel[i]);
    sort(rel + 1, rel + n, cmp);
    for (int i = 1; i < n; ++i) rel[i + n - 1] = rel[i];
    for (int j = 1, k = 1; j < n; ++j) {
      while (k - j < n - 1 && cross(rel[j], rel[k]) >= 0) k++;
      ans += comb(k - j - 1) * comb(n - 1 - (k - j));
    }
  }
  cout << ans / 2 << endl;
}
