#include <bits/stdc++.h>
using namespace std;
int n;
long long ans = 0;
int currPt;
struct Point {
  int x, y;
  Point() { x = y = 0; }
  Point(int _x, int _y) {
    x = _x;
    y = _y;
  }
};
Point p[2000];
Point curr[2000];
bool cmp1(const Point& a, const Point& b) {
  if (b.y > a.y)
    return 1;
  else if (b.y == a.y) {
    if (b.x > a.x)
      return 1;
    else
      return 0;
  } else {
    return 0;
  }
}
bool cmp2(const Point& a, const Point& b) {
  int x1 = a.x - p[currPt].x;
  int x2 = b.x - p[currPt].x;
  int y1 = a.y - p[currPt].y;
  int y2 = b.y - p[currPt].y;
  if (x1 * y2 - x2 * y1 > 0)
    return 1;
  else
    return 0;
}
int cmp3(const Point& a, const Point& b) {
  int x1 = a.x - p[currPt].x;
  int x2 = b.x - p[currPt].x;
  int y1 = a.y - p[currPt].y;
  int y2 = b.y - p[currPt].y;
  int res = x1 * y2 - x2 * y1;
  if (res > 0)
    return 1;
  else if (res == 0)
    return 0;
  else
    return -1;
}
void go(int pt) {
  for (int i = 0; i < n; i++) {
    curr[i] = p[i];
  }
  sort(curr + pt + 1, curr + n, cmp2);
  for (int i = pt + 1; i < n; i++) {
    int r = i;
    while (r + 1 < n && cmp3(curr[i], curr[r + 1]) == 0) r++;
    ans += (long long)(r - i + 1) * (n - 1 - r);
    i = r;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    p[i] = Point(x, y);
  }
  sort(p, p + n, cmp1);
  for (currPt = 0; currPt < n; currPt++) {
    go(currPt);
  }
  printf("%I64d", ans);
}
