You are given a set of n points in a 2D plane. No three points are collinear.

A pentagram is a set of 5 points A,B,C,D,E that can be arranged as follows. <image> Note the length of the line segments don't matter, only that those particular intersections exist.

Count the number of ways to choose 5 points from the given set that form a pentagram.

Input

The first line contains an integer n (5 ≤ n ≤ 300) — the number of points.

Each of the next n lines contains two integers x_i, y_i (-10^6 ≤ x_i,y_i ≤ 10^6) — the coordinates of the i-th point. It is guaranteed that no three points are collinear.

Output

Print a single integer, the number of sets of 5 points that form a pentagram.

Examples

Input


5
0 0
0 2
2 0
2 2
1 3


Output


1


Input


5
0 0
4 0
0 4
4 4
2 3


Output


0


Input


10
841746 527518
595261 331297
-946901 129987
670374 -140388
-684770 309555
-302589 415564
-387435 613331
-624940 -95922
945847 -199224
24636 -565799


Output


85

Note

A picture of the first sample: <image> A picture of the second sample: <image> A picture of the third sample: <image>
#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y;
  point operator-(point a) { return {x - a.x, y - a.y}; }
} a[1000], b[1000];
bool cmp1(point x, point y) {
  return (fabs(x.x - y.x) < 1e-5) ? (x.x < y.x) : (x.y < y.y);
}
bool cmp2(point x, point y) { return atan2(x.y, x.x) > atan2(y.y, y.x); }
double cross(point x, point y) { return x.x * y.y - y.x * x.y; }
long long ans;
int n, m, f[5][305][305];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &a[i].x, &a[i].y);
  sort(a + 1, a + n + 1, cmp1);
  for (int i = 1; i <= n; i++) {
    m = 0;
    for (int j = i; j <= n; j++) b[++m] = a[j] - a[i];
    for (int i = 1; i <= 4; i++)
      for (int j = 1; j <= n; j++)
        for (int k = 1; k <= n; k++) f[i][j][k] = 0;
    sort(b + 2, b + m + 1, cmp2);
    for (int i = 2; i <= m; i++) f[1][i][1] = 1;
    for (int i = 1; i <= 3; i++)
      for (int j = i + 1; j < m; j++)
        for (int k = 1; k < j; k++)
          if (f[i][j][k]) {
            for (int ij = j + 1; ij <= m; ij++)
              if (cross(b[j] - b[k], b[ij] - b[k]) < 1e-5)
                f[i + 1][ij][j] += f[i][j][k];
          }
    for (int i = 1; i < m; i++)
      for (int j = i + 1; j <= m; j++)
        if (cross(b[j] - b[i], b[1] - b[i]) < 1e-5) ans += f[4][j][i];
  }
  printf("%lld", ans);
  return 0;
}
