#include <bits/stdc++.h>
using namespace std;
mt19937 rng(static_cast<unsigned int>(
    chrono::steady_clock::now().time_since_epoch().count()));
template <typename num_t>
inline void add_mod(num_t& a, const long long& b, const int& m) {
  a = (a + b) % m;
  if (a < 0) a += m;
}
template <typename num_t>
inline void unsafe_add_mod(num_t& a, const long long& b, const int& m) {
  a += b;
  if (a < 0)
    a += m;
  else if (a >= m)
    a -= m;
}
template <typename num_t>
inline bool update_max(num_t& a, const num_t& b) {
  return a < b ? a = b, true : false;
}
template <typename num_t>
inline bool update_min(num_t& a, const num_t& b) {
  return a > b ? a = b, true : false;
}
template <typename num_t>
num_t gcd(const num_t& lhs, const num_t& rhs) {
  return !lhs ? rhs : gcd(rhs % lhs, lhs);
}
template <typename num_t>
num_t lcm(const num_t& lhs, const num_t& rhs) {
  return lhs / ::gcd(lhs, rhs) * rhs;
}
template <typename num_t>
num_t pw(num_t n, num_t k, const num_t& mod) {
  if (k == -1) k = mod - 2;
  num_t res = 1;
  for (; k > 0; k >>= 1) {
    if (k & 1) res = 1ll * res * n % mod;
    n = 1ll * n * n % mod;
  }
  return res % mod;
}
const int inf = 1e9 + 7;
const long long ll_inf = (long long)inf * inf * 9 + 7;
const int maxn = 1000000 + 7;
long long check(pair<int, int> u, pair<int, int> v) {
  long long temp = 1ll * u.first * v.second - 1ll * u.second - v.first;
  if (u.first >= 0)
    return temp < 0;
  else
    return temp > 0;
}
void solve() {
  int n;
  cin >> n;
  vector<pair<int, int>> points(n);
  for (int i = (0), _b = (n); i < _b; ++i) {
    cin >> points[i].first >> points[i].second;
  }
  long long total = 0;
  long long base = 1ll * (n - 1) * (n - 2) * (n - 3) * (n - 4) / 1 / 2 / 3 / 4;
  auto get_diff = [&](int u, int v) -> pair<int, int> {
    return {points[v].first - points[u].first,
            points[v].second - points[u].second};
  };
  for (int cur = (0), _b = (n); cur < _b; ++cur) {
    vector<int> lhs, rhs;
    for (int nxt = (0), _b = (n); nxt < _b; ++nxt)
      if (cur != nxt) {
        pair<int, int> temp = get_diff(cur, nxt);
        if (temp.first > 0 || (temp.first == 0 && temp.second > 0))
          lhs.push_back(nxt);
        else
          rhs.push_back(nxt);
      }
    auto cmp1 = [&](pair<int, int> u, pair<int, int> v) -> long long {
      return 1ll * u.second * v.first - 1ll * v.second * u.first;
    };
    auto cmp2 = [&](int u, int v) -> bool {
      return cmp1(get_diff(cur, u), get_diff(cur, v)) > 0;
    };
    sort(lhs.begin(), lhs.end(), cmp2);
    sort(rhs.begin(), rhs.end(), cmp2);
    int check_cur = 2;
    total += base;
    for (int i = 0, j = 0; i < (int)(lhs).size(); ++i) {
      while (j < rhs.size() && cmp2(lhs[i], rhs[j]) > 0) ++j;
      int num = j + (int)(lhs).size() - i - 1;
      if (num >= 3) {
        total -= 1ll * num * (num - 1) * (num - 2) / 6;
      }
    }
    for (int j = 0, i = 0; j < (int)(rhs).size(); ++j) {
      while (i < (int)(lhs).size() && cmp2(rhs[j], lhs[i]) > 0) ++i;
      int num = i + (int)(rhs).size() - j - 1;
      if (num >= 3) {
        total -= 1ll * num * (num - 1) * (num - 2) / 6;
      }
    }
  }
  cout << total << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  const bool multiple_test = false;
  int test = 1;
  if (multiple_test) cin >> test;
  for (int i = 0; i < test; ++i) {
    solve();
  }
}
