#include <bits/stdc++.h>
using namespace std;
int gcd(int x, int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
int main() {
  long long n;
  bool exist[201][201];
  pair<int, int> p[2000];
  while (cin >> n) {
    memset(exist, 0, sizeof(exist));
    for (int i = 0; i < n; i++) {
      cin >> p[i].first >> p[i].second;
      exist[p[i].first + 100][p[i].second + 100] = true;
    }
    if (n <= 2) {
      puts("0");
      continue;
    }
    long long cnt = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (i == j) continue;
        int dx = p[i].first - p[j].first, dy = p[i].second - p[j].second;
        int g = gcd(dx, dy);
        dx /= g;
        dy /= g;
        if (dx == 0) {
          for (int y = -100; y <= 100; y++) {
            if (y == p[i].second || y == p[j].second) continue;
            if (exist[p[i].first + 100][y + 100]) {
              cnt++;
            }
          }
        } else {
          for (int x = -100; x <= 100; x++) {
            if (x == p[i].first || x == p[j].first) continue;
            if ((x - p[i].first) % dx == 0) {
              int y = (x - p[i].first) / dx * dy + p[i].second;
              if (-100 <= y && y <= 100 && exist[x + 100][y + 100]) {
                cnt++;
              }
            }
          }
        }
      }
    }
    long long ans = (n * (n - 1) * (n - 2) - cnt) / 6;
    cout << ans << endl;
  }
  return 0;
}
