#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char c = getchar();
  long long x = 0;
  bool f = 0;
  for (; !isdigit(c); c = getchar()) f ^= !(c ^ 45);
  for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
  if (f) x = -x;
  return x;
}
struct P {
  long long x, y;
  P(double x = 0, double y = 0) : x(x), y(y) {}
  P& operator+=(P o) { return x += o.x, y += o.y, *this; }
  P& operator-=(P o) { return x -= o.x, y -= o.y, *this; }
  friend P operator+(P a, P b) { return a += b; }
  friend P operator-(P a, P b) { return a -= b; }
  friend long long operator*(P a, P b) { return a.x * b.x + a.y * b.y; }
  friend long long operator%(P a, P b) { return a.x * b.y - a.y * b.x; }
};
long long n, m;
long long x[1000005], y[1000005];
P v[1000005 << 1];
inline long long C(long long n, long long m) {
  long long res = 1;
  for (register long long i = (0); i <= (m - 1); ++i)
    res *= n - i, res /= i + 1;
  return res;
}
bool in(P a) { return a.y < 0 || (a.x > 0 && !a.y); }
bool cmp(P a, P b) {
  if (in(a) != in(b)) return in(a) < in(b);
  return a % b > 0;
}
signed main() {
  n = read();
  for (register long long i = (1); i <= (n); ++i) x[i] = read(), y[i] = read();
  long long all = C(n, 5), res = 0;
  for (register long long i = (1); i <= (n); ++i) {
    m = 0;
    for (register long long j = (1); j <= (n); ++j)
      if (i != j) v[++m] = P(x[j] - x[i], y[j] - y[i]);
    sort(v + 1, v + m + 1, cmp);
    for (register long long j = (1); j <= (m); ++j) v[m + j] = v[j];
    long long p = 1;
    for (register long long j = (m + 1); j <= (m + m); ++j) {
      while (p <= j - m || v[j] % v[p] > 0) p++;
      res += C(j - p, 3);
    }
  }
  cout << all * 5 - res;
  return 0;
}
