#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>> points(n);
  for (int i = 0; i < points.size(); ++i) {
    cin >> points[i].first >> points[i].second;
  }
  map<pair<int, int>, set<long long>> slope_map;
  long long total = 0, res = 0;
  for (int i = 0; i < points.size(); ++i) {
    for (int j = i + 1; j < points.size(); ++j) {
      int x1 = points[i].first, y1 = points[i].second;
      int x2 = points[j].first, y2 = points[j].second;
      int a = y1 - y2, b = x1 - x2;
      int g_c_d = gcd(abs(a), abs(b));
      a /= g_c_d, b /= g_c_d;
      if (a < 0 || (a == 0 && b < 0)) {
        a = -a;
        b = -b;
      }
      long long c = 1LL * a * x1 - 1LL * b * y1;
      pair<int, int> slope(a, b);
      if (!slope_map[slope].count(c)) {
        ++total;
        slope_map[slope].insert(c);
        res += total - slope_map[slope].size();
      }
    }
  }
  cout << res << endl;
  return 0;
}
