#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const int maxn = 2123;
int n;
long long ans;
struct P {
  long long x, y;
  inline P() {}
  inline P(long long x, long long y) : x(x), y(y) {}
  inline P operator-(const P &rhs) const { return P(x - rhs.x, y - rhs.y); }
  inline double angle() const { return atan2(y, x); }
} p[maxn];
inline long long C(long long x) { return x * (x - 1) / 2; }
void go(int i) {
  vector<double> L, R;
  for (int j = 1; j <= n; ++j)
    if (j != i) {
      double angle = (p[j] - p[i]).angle();
      if (angle <= 0)
        L.push_back(angle);
      else
        R.push_back(angle);
    }
  long long cntl = L.size(), cntr = R.size();
  sort(L.begin(), L.end());
  sort(R.begin(), R.end());
  int p0 = 0, p1 = 0;
  while (p0 < (int)L.size() && p1 < (int)R.size())
    if (L[p0] < R[p1] - pi) {
      ++p0;
      --cntl;
      ans += 2LL * C(cntl) * C(cntr);
      ++cntr;
    } else {
      --cntr;
      ans += 2LL * C(cntl) * C(cntr);
      ++cntl;
      ++p1;
    }
  while (p1++ < (int)R.size()) {
    --cntr;
    ans += 2LL * C(cntl) * C(cntr);
    ++cntl;
  }
  while (p0++ < (int)L.size()) {
    --cntl;
    ans += 2LL * C(cntl) * C(cntr);
    ++cntr;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%I64d%I64d", &p[i].x, &p[i].y);
  for (int i = 1; i <= n; ++i) go(i);
  return 0 * printf("%I64d\n", ans / 4);
}
