#include <bits/stdc++.h>
using namespace std;
const int maxn = 2003;
int a[maxn * maxn];
int x[maxn], y[maxn];
int gcd(int x, int y) {
  while (x && y) {
    if (x > y)
      x %= y;
    else
      y %= x;
  }
  return x + y;
}
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> x[i] >> y[i];
  long long ans = (n * 1ll * (n - 1) * 1ll * (n - 2)) / 6;
  vector<pair<pair<int, int>, int> > v;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) {
      int a = y[i] - y[j];
      int b = x[j] - x[i];
      int c = -(x[i] * a + y[i] * b);
      int nod = gcd(gcd(abs(a), abs(b)), abs(c));
      a /= nod, b /= nod, c /= nod;
      if (a < 0) a *= -1, b *= -1, c *= -1;
      if (a == 0 && b < 0) b *= -1, c *= -1;
      v.push_back(make_pair(make_pair(a, b), c));
    }
  for (int i = 2; i <= 2000; i++) a[i * (i - 1) / 2] = i;
  sort(v.begin(), v.end());
  for (int i = 0; i < (int)v.size();) {
    int j = i;
    for (; j < (int)v.size(); j++)
      if (v[j] != v[i]) break;
    int x = a[j - i];
    ans -= (x * 1ll * (x - 1) * 1ll * (x - 2)) / 6;
    i = j;
  }
  cout << ans << "\n";
  return 0;
}
