#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int main() {
  int n;
  cin >> n;
  vector<pair<int, int>> in;
  for (int i = 0; i < n; ++i) {
    int a, b;
    cin >> a >> b;
    in.push_back({a, b});
  }
  set<pair<pair<int, int>, int>> ss;
  for (int i = 0; i < in.size(); ++i) {
    int x1 = in[i].first;
    int y1 = in[i].second;
    for (int j = i + 1; j < in.size(); ++j) {
      if (i == j) continue;
      int x2 = in[j].first;
      int y2 = in[j].second;
      int a = y1 - y2;
      int b = x1 - x2;
      int hcf = gcd(a, b);
      a /= hcf;
      b /= hcf;
      if (a < 0 || a == 0 && b < 0) {
        a = -a;
        b = -b;
      }
      int c = a * x1 - b * y1;
      ss.insert({{a, b}, c});
    }
  }
  long long tlcnt = ss.size();
  int parallel = 0;
  map<pair<int, int>, int> mp;
  for (auto &i : ss) {
    ++mp[i.first];
  }
  long long cnt = 0;
  for (auto &m : mp) {
    cnt += (m.second * (m.second - 1)) / 2;
  }
  cout << ((tlcnt * (tlcnt - 1)) / 2 - cnt) << '\n';
  return 0;
}
