#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > v;
int nwd(int a, int b) {
  if (a > b) swap(a, b);
  if (!a) return b;
  return nwd(b % a, a);
}
long long licz(int a) {
  vector<pair<int, int> > w = v;
  swap(w[a], w[(int)((w).size()) - 1]);
  w.pop_back();
  for (auto i = (0); i <= (((int)((w).size())) - 1); ++i) {
    w[i] = make_pair(w[i].first - v[a].first, w[i].second - v[a].second);
    if (w[i].first < 0) {
      w[i].first *= -1;
      w[i].second *= -1;
    } else {
      if (w[i].first == 0 && w[i].second < 0) w[i].second *= -1;
    }
    int x = nwd(abs(w[i].first), abs(w[i].second));
    w[i].first /= x;
    w[i].second /= x;
  }
  sort((w).begin(), (w).end());
  int pocz = 0;
  long long res = 0;
  while (pocz < (int)((w).size())) {
    int act = pocz;
    while (act < (int)((w).size()) && w[act] == w[pocz]) act++;
    long long ile = act - pocz;
    res += (ile * (ile - 1LL)) / 2;
    pocz = act;
  }
  return res;
}
void jebaj() {
  int n;
  cin >> n;
  v.resize(n);
  for (auto i = (0); i <= ((n)-1); ++i) cin >> v[i].first >> v[i].second;
  long long res = 0;
  for (auto i = (0); i <= ((n)-1); ++i) {
    res += (n - 1) * (n - 2) / 2;
    res -= licz(i);
  }
  res /= 3LL;
  cout << res << "\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  int t = 1;
  for (auto i = (0); i <= ((t)-1); ++i) {
    jebaj();
  }
}
