#include <bits/stdc++.h>
using namespace std;
int x[2005];
int y[2005];
pair<int, int> P[2005];
map<int, map<int, int> > mm;
map<int, map<int, int> >::iterator its1;
map<int, int>::iterator its2;
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &P[i].first, &P[i].second);
  sort(P, P + n);
  if (n < 3)
    printf("0\n");
  else {
    long long ans = (long long)n * (n - 1) * (n - 2) / 6ll;
    for (int i = 0; i < n; i++) {
      x[i] = P[i].first;
      y[i] = P[i].second;
    }
    for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n; j++) {
        int p1 = x[i] - x[j] >= 0 ? 1 : -1;
        int p2 = y[i] - y[j] >= 0 ? 1 : -1;
        int g = gcd(abs(x[i] - x[j]), abs(y[i] - y[j]));
        int xx = (x[i] - x[j]) / g;
        int yy = (y[i] - y[j]) / g;
        mm[xx][yy]++;
      }
      for (its1 = mm.begin(); its1 != mm.end(); its1++) {
        for (its2 = (its1->second).begin(); its2 != (its1->second).end();
             its2++) {
          ans -= (long long)its2->second * (its2->second - 1) / 2;
        }
      }
      mm.clear();
    }
    printf("%lld\n", ans);
  }
}
