#include <bits/stdc++.h>
using namespace std;
struct pp {
  int x, y;
};
long long n;
pp p[2005];
bool cmp_p(pp p1, pp p2) {
  return (p1.y < p2.y || (p1.y == p2.y && p1.x < p2.x));
}
double goc(pp p1, pp p2) {
  int dx, dy, ax, ay;
  dx = p2.x - p1.x;
  ax = abs(dx);
  dy = p2.y - p1.y;
  ay = abs(dy);
  double t = double(dy) / double(ax + ay);
  if (dx < 0)
    t = 2 - t;
  else if (dy < 0)
    t = 4 + t;
  return t * 90;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> p[i].x >> p[i].y;
  sort(p + 1, p + n + 1, cmp_p);
  long long ans = 0;
  for (int i = 1; i <= n - 2; i++) {
    vector<double> g;
    for (int j = i + 1; j <= n; j++) g.push_back(goc(p[i], p[j]));
    sort(g.begin(), g.end());
    int m = g.size() - 1;
    long long j = 0;
    while (j <= m) {
      long long k = j;
      while (k < m && abs(g[j] - g[k + 1]) <= 0.0000000001) k++;
      ans = ans + ((k - j) * (k - j + 1)) / 2;
      j = k + 1;
    }
  }
  cout << (n * (n - 1) * (n - 2)) / 6 - ans;
  return 0;
}
