#include <bits/stdc++.h>
using namespace std;
long long mod1 = 100000004021LL;
long long mod2 = 100000004053LL;
long long base1 = 503;
long long base2 = 509;
int setBit(int n, int r) { return n | (1 << r); }
int resetBit(int n, int r) { return n & ~(1 << r); }
int checkBit(int n, int r) { return n & (1 << r); }
template <class T>
T sqr(T x) {
  return x * x;
}
template <class T>
T mod(T a, T b) {
  return (a % b) >= 0 ? (a % b) : (a % b) + b;
}
template <class T>
T bigmod(T p, T e, T M) {
  T ret = 1 % M;
  while (e > 0) {
    if (e % 2) ret = (ret * p) % M;
    p = (p * p) % M;
    e /= 2;
  }
  return ret;
}
template <class T>
T power(T x, T y) {
  T ans = 1;
  while (y > 0) {
    if (y % 2) ans *= x;
    x *= x;
    y /= 2;
  }
  return ans;
}
template <class T>
T gcd(T a, T b) {
  while (b != 0) {
    a = a % b;
    swap(a, b);
  }
  return abs(a);
}
template <class T>
T lcm(T a, T b) {
  return a * (b / gcd(a, b));
}
long long read() {
  bool sgn = false;
  long long result = 0;
  char ch;
  ch = getchar();
  while (true) {
    if (ch == '-') break;
    if (ch >= '0' && ch <= '9') break;
    ch = getchar();
  }
  if (ch == '-')
    sgn = true;
  else
    result = ch - '0';
  while (true) {
    ch = getchar();
    if (ch < '0' || ch > '9') break;
    result = result * 10 + (ch - '0');
  }
  if (sgn) result = -result;
  return result;
}
template <class T>
ostream &operator<<(ostream &out, pair<T, T> p) {
  cout << "{" << p.first << ", " << p.second << "}";
  return out;
}
template <class T>
ostream &operator<<(ostream &out, vector<T> vec) {
  if (vec.size()) {
    cout << vec[0];
    for (int i = 1; i < vec.size(); i++) {
      cout << " " << vec[i];
    }
  }
  return out;
}
int n;
int x[2002], y[2002];
long long nc3(long long r) { return r * (r - 1) * (r - 2) / 6; }
long long nc2(long long r) { return r * (r - 1) / 2; }
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    x[i] = read();
    y[i] = read();
  }
  long long res = nc3(n);
  for (int i = 0; i < n; i++) {
    map<pair<int, int>, long long> mp;
    for (int j = i + 1; j < n; j++) {
      int dx = x[i] - x[j];
      int dy = y[i] - y[j];
      int g = gcd(dx, dy);
      if (g > 0) {
        dx /= g;
        dy /= g;
      }
      if (dx * dy < 0) {
        dx = -abs(dx);
        dy = abs(dy);
      } else {
        dx = abs(dx);
        dy = abs(dy);
      }
      mp[make_pair(dx, dy)]++;
    }
    for (auto &e : mp) {
      res -= nc2(e.second);
    }
  }
  cout << res;
}
