#include <bits/stdc++.h>
using namespace std;
const long long int M = 1e9 + 7;
long long int inf = 9 * 1e18;
long long int begtime = clock();
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
vector<string> vec_splitter(string s) {
  s += ',';
  vector<string> res;
  while (!s.empty()) {
    res.push_back(s.substr(0, s.find(',')));
    s = s.substr(s.find(',') + 1);
  }
  return res;
}
void debug_out(vector<string> __attribute__((unused)) args,
               __attribute__((unused)) int idx,
               __attribute__((unused)) int LINE_NUM) {
  cout << endl;
}
template <typename Head, typename... Tail>
void debug_out(vector<string> args, int idx, int LINE_NUM, Head H, Tail... T) {
  if (idx > 0)
    cout << " | ";
  else
    cout << "Line(" << LINE_NUM << ") ";
  stringstream ss;
  ss << H;
  cout << args[idx] << " = " << ss.str();
  debug_out(args, idx + 1, LINE_NUM, T...);
}
long long int n, m;
long long int binpow(long long int val, long long int deg) {
  if (deg < 0) return 0;
  if (!deg) return 1 % M;
  if (deg & 1) return binpow(val, deg - 1) * val % M;
  long long int res = binpow(val, deg >> 1);
  return (res * res) % M;
}
long long int modinv(long long int n) { return binpow(n, M - 2); }
long long int gcd(long long int a, long long int b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
pair<long long int, long long int> slope(pair<long long int, long long int> a,
                                         pair<long long int, long long int> b) {
  long long int x = a.first - b.first;
  long long int y = a.second - b.second;
  if (x < 0) {
    x *= -1;
    y *= -1;
  }
  if (x == 0) {
    if (y < 0) y *= -1;
  }
  long long int z = gcd(x, y);
  x /= z;
  y /= z;
  return {x, y};
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int i, j, t, k, x, y, z, N;
  cin >> n;
  long long int a[n], b[n];
  for (i = 0; i < n; i++) {
    cin >> a[i] >> b[i];
  }
  long long int tot = 0;
  for (i = 2; i < n; i++) {
    map<pair<long long int, long long int>, long long int> ma;
    for (j = 0; j < i; j++) {
      pair<long long int, long long int> dm = slope({a[j], b[j]}, {a[i], b[i]});
      ma[dm]++;
    }
    long long int nways = 0;
    for (auto u : ma) {
      if (i - u.second > 0) nways += (i - u.second) * (u.second);
    }
    nways /= 2;
    tot += nways;
  }
  cout << tot;
  return 0;
}
