#include <bits/stdc++.h>
using namespace std;
long long C(long long n, long long k) {
  long long ans = 1;
  for (int i = 0; i < k; i++) ans *= (n - i);
  for (int i = 0; i < k; i++) ans /= (i + 1);
  return ans;
}
struct pt {
  long long x, y;
  int quad;
  int id;
  pt(long long x = 0, long long y = 0) : x(x), y(y) {}
  pt operator-(pt p) { return pt(x - p.x, y - p.y); }
  long long operator%(pt p) { return x * p.y - y * p.x; }
} v[1001000];
long long ccw(pt a, pt b, pt c) { return (b - a) % (c - a); }
int pi;
pt arr[1001000];
bool cmp(pt a, pt b) {
  if (a.quad != b.quad) return a.quad < b.quad;
  return ccw(v[pi], a, b) > 0;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%lld%lld", &v[i].x, &v[i].y);
  }
  long long ans = 0;
  for (pi = 0; pi < n; pi++) {
    int s = 0;
    for (int i = 0; i < n; i++)
      if (i != pi) {
        arr[s] = v[i];
        if (v[i].x >= v[pi].x && v[i].y >= v[pi].y)
          arr[s].quad = 1;
        else if (v[i].y > v[pi].y)
          arr[s].quad = 2;
        else if (v[i].x < v[pi].x)
          arr[s].quad = 3;
        else
          arr[s].quad = 4;
        arr[s].id = i;
        s++;
      }
    sort(arr, arr + s, cmp);
    for (int i = s; i < 2 * s; i++) arr[i] = arr[i - s];
    long long as = C(n - 1, 4);
    int r = 0;
    for (int i = 0; i < s; i++) {
      while (r < i) r++;
      while (r + 1 < i + s && ccw(arr[i], v[pi], arr[r + 1]) < 0) r++;
      ("i %d pt (%lld;%lld) r %d (%c)\n", i, arr[i].x, arr[i].y, r,
       arr[i].id + 'A');
      as -= C(r - i + 1 - 1, 3);
    }
    ("pt %d ans %lld\n", pi, as);
    ans += as;
  }
  printf("%lld\n", ans);
}
