#include <bits/stdc++.h>
using namespace std;
const long long N = 300;
inline long long read() {
  long long s = 0, ww = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') ww = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') {
    s = 10 * s + ch - '0';
    ch = getchar();
  }
  return s * ww;
}
struct vec {
  long long x, y;
  vec() {}
  vec(long long _x, long long _y) { x = _x, y = _y; }
  inline friend vec operator-(vec a, vec b) {
    return vec(a.x - b.x, a.y - b.y);
  }
  inline friend long long Cross(vec a, vec b) { return a.x * b.y - a.y * b.x; }
  inline friend bool InUpper(vec a) { return a.y > 0 || (a.y == 0 && a.x > 0); }
} p[N + 5];
inline bool cmp(pair<long long, long long> i, pair<long long, long long> j) {
  vec a = p[i.second] - p[i.first], b = p[j.second] - p[j.first];
  bool k1 = InUpper(a), k2 = InUpper(b);
  if (k1 != k2) return k1 < k2;
  return Cross(a, b) > 0;
}
long long f[N + 5][N + 5][7];
long long n;
pair<long long, long long> seg[N * N + 5];
int main() {
  n = read();
  for (register int i = 1; i <= n; i++) {
    long long x = read(), y = read();
    p[i] = vec(x, y);
  }
  int cnt = 0;
  for (register int i = 1; i <= n; i++)
    for (register int j = 1; j <= n; j++)
      if (i != j) seg[++cnt] = make_pair(i, j);
  sort(seg + 1, seg + cnt + 1, cmp);
  for (register int i = 1; i <= n; i++) f[i][i][1] = 1;
  for (register int k = 1; k <= cnt; k++) {
    int u = seg[k].first, v = seg[k].second;
    for (register int i = 1; i <= n; i++)
      for (register int j = 1; j <= 5; j++) f[i][v][j + 1] += f[i][u][j];
  }
  long long ans = 0;
  for (register int i = 1; i <= n; i++) ans += f[i][i][6];
  cout << ans << endl;
  return 0;
}
