#include <bits/stdc++.h>
using namespace std;
long long int insig;
void Out(vector<long long int> x) {
  for (long long int i = 0; i < x.size(); i++) {
    cout << x[i] << " ";
  }
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int N;
  cin >> N;
  vector<pair<long long int, long long int> > p;
  long long int c1, c2;
  for (long long int i = 0; i < N; i++) {
    cin >> c1 >> c2;
    p.push_back(make_pair(c1, c2));
  }
  long long int ans =
      (long long int)(N * (N - 1LL) * (N - 2LL) * (N - 3LL) * (N - 4LL)) /
      120LL;
  ans *= 5;
  long long int l;
  long long int a = 1;
  long long int b = -1;
  long double val;
  for (long long int i = 0; i < N; i++) {
    long long int x = p[i].first;
    long long int y = p[i].second;
    vector<long double> t1, t2, t3, t4, t5, t6, t7, t8;
    long double val;
    for (long long int j = 0; j < N; j++) {
      if (j == i) {
        continue;
      }
      if (p[j].first != x) {
        val = (long double)(((long double)(p[j].second - y)) /
                            ((long double)(p[j].first - x)));
      }
      if (p[j].first == x && p[j].second > y) {
        t6.push_back(0);
      } else if (p[j].first == x && p[j].second < y) {
        t8.push_back(0);
      } else if (p[j].first > x && p[j].second == y) {
        t5.push_back(val);
      } else if (p[j].first < x && p[j].second == y) {
        t7.push_back(val);
      } else if (p[j].first > x && p[j].second > y) {
        t1.push_back(val);
      } else if (p[j].first > x && p[j].second < y) {
        t4.push_back(-val);
      } else if (p[j].first < x && p[j].second > y) {
        t2.push_back(-val);
      } else if (p[j].first < x && p[j].second < y) {
        t3.push_back(val);
      }
    }
    sort(t1.begin(), t1.end());
    sort(t2.begin(), t2.end());
    sort(t3.begin(), t3.end());
    sort(t4.begin(), t4.end());
    for (long long int j = 0; j < t1.size(); j++) {
      l = (j + t5.size() + t4.size() + t8.size() +
           (long long int)(t3.end() -
                           lower_bound(t3.begin(), t3.end(), t1[j])));
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    for (long long int j = 0; j < t2.size(); j++) {
      l = (t2.size() - j - 1 + t6.size() + t1.size() + t5.size() +
           (long long int)(lower_bound(t4.begin(), t4.end(), t2[j]) -
                           t4.begin()));
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    for (long long int j = 0; j < t3.size(); j++) {
      l = (j + t7.size() + t2.size() + t6.size() +
           (long long int)(t1.end() -
                           lower_bound(t1.begin(), t1.end(), t3[j])));
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    for (long long int j = 0; j < t4.size(); j++) {
      l = (t4.size() - j - 1 + t8.size() + t3.size() + t7.size() +
           (long long int)(lower_bound(t2.begin(), t2.end(), t4[j]) -
                           t2.begin()));
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    if (t5.size() == 1) {
      l = (t4.size() + t8.size() + t3.size());
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    if (t6.size() == 1) {
      l = (t1.size() + t5.size() + t4.size());
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    if (t7.size() == 1) {
      l = (t2.size() + t6.size() + t1.size());
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
    if (t8.size() == 1) {
      l = (t3.size() + t7.size() + t2.size());
      ans -= (long long int)(l * (l - 1LL) * (l - 2LL)) / 6LL;
    }
  }
  cout << ans << endl;
  return 0;
}
