#include <bits/stdc++.h>
using namespace std;
using LL = long long;
struct Point {
  LL x, y;
};
struct Line {
  LL A, B, C;
};
const int MAXN = 302;
int n;
LL ps[MAXN][MAXN][5];
LL ns[MAXN][MAXN][5];
int f[MAXN];
Line GetLine(Point& a, Point& b) {
  return {a.y - b.y, b.x - a.x, a.x * b.y - a.y * b.x};
}
bool Query(int a, int b, int c) {
  int pc = c / 60, bc = c % 60;
  return ps[a][b][pc] >> bc & 1;
}
vector<LL> GetST(int a, int b, int c) {
  vector<LL> ans;
  if (c == 1) {
    for (int i = 0; i < n; i += 60) {
      int j = i / 60;
      ans.push_back(ps[a][b][j]);
    }
  } else {
    for (int i = 0; i < n; i += 60) {
      int j = i / 60;
      ans.push_back(ns[a][b][j]);
    }
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  vector<Point> x(n);
  for (int i = 0; i < n; ++i) cin >> x[i].x >> x[i].y;
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      auto [A, B, C] = GetLine(x[i], x[j]);
      int p = 0, bit = 0;
      LL pps = 0, nns = 0;
      for (int k = 0; k < n; ++k) {
        LL val = A * x[k].x + B * x[k].y + C;
        if (val > 0) pps |= (1LL << bit);
        if (val < 0) nns |= (1LL << bit);
        ++bit;
        if (bit == 60) {
          ps[i][j][p] = pps;
          ns[i][j][p] = nns;
          pps = nns = 0;
          bit = 0;
          ++p;
        }
      }
      if (bit > 0) {
        ps[i][j][p] = pps;
        ns[i][j][p] = nns;
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      for (int k = j + 1; k < n; ++k) {
        vector<LL> sij;
        if (Query(i, j, k) == 0) {
          sij = GetST(i, j, 0);
        } else {
          sij = GetST(i, j, 1);
        }
        vector<LL> sik;
        if (Query(i, k, j) == 0) {
          sik = GetST(i, k, 0);
        } else {
          sik = GetST(i, k, 1);
        }
        vector<LL> sjk;
        if (Query(j, k, i) == 0) {
          sjk = GetST(j, k, 0);
        } else {
          sjk = GetST(j, k, 1);
        }
        int cnt = 0;
        for (int l = 0; l < sik.size(); ++l) {
          LL ss = sij[l] & sik[l] & sjk[l];
          cnt += __builtin_popcount(ss >> 30);
          cnt += __builtin_popcount(ss & ((1 << 30) - 1));
        }
        ++f[cnt];
      }
    }
  }
  LL ans = 1LL * n * (n - 1) * (n - 2) * (n - 3) * (n - 4) / 120;
  LL diff = 0;
  for (int i = 1; i <= n; ++i) {
    diff += 1LL * i * f[i] * (n - 4);
  }
  ans -= diff / 2;
  for (int i = 2; i <= n; ++i) {
    ans += 1LL * i * (i - 1) / 2 * f[i];
  }
  cout << ans << endl;
  return 0;
}
