#include <bits/stdc++.h>
using namespace std;
const int N = 2000;
struct point {
  long long x, y;
  point(long long a = 0, long long b = 0) {
    x = a;
    y = b;
  }
  void sc() { scanf("%lld%lld", &x, &y); }
  point operator+(const point &a) { return point(x + a.x, y + a.y); }
  point operator-(const point &a) { return point(x - a.x, y - a.y); }
  long long operator*(const point &a) { return a.x * x + a.y * y; }
  long long operator^(const point &a) { return x * a.y - a.x * y; }
} a[N];
pair<double, point> b[N];
long long choose2(int a) { return a * (a - 1LL) / 2; }
int n, sum, r, at;
long long ans;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) a[i].sc();
  for (int i = 0; i < n; i++) {
    at = r = sum = 0;
    for (int j = 0; j < n; j++)
      if (i != j)
        b[at++].second = a[j] - a[i],
        b[at - 1].first = atan2(b[at - 1].second.y, b[at - 1].second.x);
    sort(
        b, b + n - 1,
        [](const pair<double, point> &a, const pair<double, point> &b) -> bool {
          return a.first < b.first;
        });
    for (int j = 0; j < n - 1; j++) {
      while (true) {
        if ((b[r].second ^ b[j].second) > 0) break;
        r++;
        sum++;
        if (r == n - 1) r %= n - 1;
        if (j == r) break;
      }
      ans += choose2(sum - 1) * choose2(n - 1 - sum);
      sum--;
    }
  }
  printf("%lld\n", ans / 2);
}
