#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
const bool typetest = 0;
const int N = 2e3 + 5;
struct Point {
  ll x, y;
  Point(const ll &x = 0, const ll &y = 0) : x(x), y(y) {}
  Point operator-(const Point &a) const { return Point(x - a.x, y - a.y); }
  ll operator*(const Point &a) { return x * a.y - y * a.x; }
} a[N], b[N];
int n, m;
ll ans(0);
void Read() {
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i].x >> a[i].y;
}
void Solve() {
  for (int i = 1; i <= n; ++i) {
    m = 0;
    for (int j = 1; j <= n; ++j)
      if (j != i) b[m++] = a[j];
    sort(b, b + m, [&](const Point &u, const Point &v) {
      bool ok1 = u.x > a[i].x || (u.x == a[i].x && u.y > a[i].y),
           ok2 = v.x > a[i].x || (v.x == a[i].x && v.y > a[i].y);
      return (ok1 != ok2 && ok1) || (ok1 == ok2 && ((u - a[i]) * (v - u)) > 0);
    });
    for (int j = 0, t = 1; j < m; ++j) {
      while (t != j && (b[j] - a[i]) * (b[t] - b[j]) > 0) (++t) %= m;
      int x = (t - 1 - j + m) % m, y = m - x - 1;
      ans += (1ll * (x) * ((x)-1) / 2) * (1ll * (y) * ((y)-1) / 2);
    }
  }
  cout << ans / 2;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t(1);
  if (typetest) cin >> t;
  for (int _ = 1; _ <= t; ++_) {
    Read();
    Solve();
  }
}
