#include <bits/stdc++.h>
struct Puntos {
  int x, y;
};
unsigned int verif(struct Puntos v[], int n);
int existependiente(struct Puntos a, struct Puntos b, struct Puntos c);
int main() {
  int n;
  unsigned int total;
  do {
    scanf("%d", &n);
  } while (n < 1 && n > 2000);
  struct Puntos v[n];
  for (int i = 0; i < n; i++) {
    do {
      scanf("%d", &v[i].x);
      scanf("%d", &v[i].y);
    } while (v[i].x < -100 && v[i].x > 100 && v[i].y < -100 && v[i].y > 100);
  }
  if (n >= 3) {
    total = verif(v, n);
  } else {
    total = 0;
  }
  printf("%u", total);
  return 0;
}
unsigned int verif(struct Puntos v[], int n) {
  unsigned int j, i, x = 0, k;
  int p, c, q;
  for (i = 0; i < n - 2; i++) {
    c = 1;
    for (j = i + c; j < n - 1; j++) {
      p = 1;
      for (k = j + p; k < n; k++) {
        if (existependiente(v[i], v[j], v[k])) {
          x++;
        }
      }
    }
  }
  return x;
}
int existependiente(struct Puntos a, struct Puntos b, struct Puntos c) {
  int p, q;
  p = a.x * b.y + b.x * c.y + c.x * a.y;
  q = a.y * b.x + b.y * c.x + c.y * a.x;
  return p - q;
}
