#include <bits/stdc++.h>
using namespace std;
const long double pi = 3.14159265358979323846;
const int inf = (int)1e9;
const long double eps = 1e-9;
const int N = 2005;
pair<int, int> a[N];
long long int all = 0;
long long int get(long long int &v) { return v * (v - 1) * (v - 2) / 6; }
inline void go(int &A, int &B, int &C, int x1, int y1, int x2, int y2) {
  A = y1 - y2;
  B = x2 - x1;
  C = x1 * y2 - x2 * y1;
}
const long long int h = 100003;
map<long long int, set<int> > c;
inline int gcd(int x, int y) {
  if (x < 0) {
    x = -x;
  }
  if (y < 0) {
    y = -y;
  }
  while (y) {
    x %= y;
    swap(x, y);
  }
  return x;
}
void solve(int &x1, int &y1, int &x2, int &y2, int &i, int &j) {
  int A, B, C;
  go(A, B, C, x1, y1, x2, y2);
  int g = gcd(A, B);
  g = gcd(g, C);
  A /= g;
  B /= g;
  C /= g;
  if (A < 0 || A == 0 && B < 0) {
    A = -A;
    B = -B;
    C = -C;
  }
  long long int now = A * h * h + B * h + C;
  c[now].insert(i);
  c[now].insert(j);
}
int main() {
  long long int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    scanf("%d %d", &a[i].first, &a[i].second);
  }
  if (n <= 2) {
    cout << 0;
    return 0;
  }
  all = get(n);
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      solve(a[i].first, a[i].second, a[j].first, a[j].second, i, j);
    }
  }
  for (map<long long int, set<int> >::iterator it = c.begin(); it != c.end();
       ++it) {
    long long int now = it->second.size();
    all -= get(now);
  }
  cout << all;
  return 0;
}
