#include <bits/stdc++.h>
#pragma comment(linker, ”/ STACK : 36777216“)
int ddx[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int ddy[] = {-1, 0, 1, -1, 1, -1, 0, 1};
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
using namespace std;
map<long long, int> hash1;
pair<int, int> a[2001];
int GCD[333][333];
int CNT[2000 * 2000];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  for (int _n((201) - 1), i(0); i <= _n; ++i) {
    GCD[i][i] = i;
    for (int _n((i)-1), j(0); j <= _n; ++j)
      GCD[j][i] = GCD[i][j] = j ? GCD[j][i % j] : i;
  }
  int n;
  cin >> n;
  for (int _n((n)-1), i(0); i <= _n; ++i) cin >> a[i].first >> a[i].second;
  for (int _n((n)-1), i(0); i <= _n; ++i)
    for (int _n((i)-1), j(0); j <= _n; ++j) {
      int A = a[i].second - a[j].second;
      int B = a[j].first - a[i].first;
      int C = A * a[i].first + B * a[i].second;
      int G = GCD[abs(A)][abs(B)];
      A /= G, B /= G, C /= G;
      if (A < 0 || (A == 0 && B < 0)) A = -A, B = -B, C = -C;
      long long H = 747ll * 747ll * C + 747ll * B + A;
      hash1[H]++;
    }
  long long ans = n * 1ll * (n - 1) * 1ll * (n - 2);
  for (int _n(n), i(2); i <= _n; ++i) CNT[(i * (i - 1)) >> 1] = i;
  for (auto it = hash1.begin(); it != hash1.end(); ++it)
    ans -= CNT[it->second] * 1ll * (CNT[it->second] - 1) * 1ll *
           (CNT[it->second] - 2);
  cout << ans / 6 << endl;
  return 0;
}
