#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <memory.h>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <complex>
#include <string>
#include <bitset>
#include <vector>
#include <cstdio>
#include <ctime>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef complex < double > cd;

const bool db = false;

#define mp make_pair
#define pb push_back
#define ppb pop_back
#define sd second
#define fs first

#define inf 1000000007
#define nmax 100010
#define mmax 100010
#define eps 1e-9

const int dx = 12612345, dy = 21236345;

int n, x[333], y[333], maxa;
long long ans, sans;
int dp[333][333];

long long on(int i, int j, int k) {
	return (x[i] - x[j]) * 1LL * (y[k] - y[j]) - (y[i] - y[j]) * 1LL * (x[k] - x[j]);
}

char havePoint(int d, int i, int j, int k = 0) {
	return abs(on(i, j, k)) == abs(on(i, j, d)) + abs(on(i, k, d)) + abs(on(j, k, d));
}

void Stupid() {
	sans = 0;
	for(int i = 1; i <= n; ++i) {
		for(int j = i + 1; j <= n; ++j) {
			for(int k = j + 1; k <= n; ++k) {
				char ok = 1;
				for(int l = 1; l <= n && ok == 1; ++l) {
					if(l == i || l == j || l == k) {
						continue;
					}
					ok &= 0 == havePoint(l, i, j, k);
				}
				if(ok == 1) {
					++sans;
				}
			}
		}
	}
}

void Solve() {
	ans = 0;
	for(int i = 1; i <= n; ++i) {
		for(int j = 1; j <= n; ++j) {
			if(i == j) continue;
//			if(on(i, j, 0) == 0) 
//				throw;
			if(x[j] * 1LL * y[i] > y[j] * 1LL * x[i]) {
				dp[i][j] = 0;
				for(int k = 1; k <= n; ++k) {
					if(k == i || k == j) {
						continue;
					}
//					if(havePoint(k, i, j) != havePoint(k, j, i))
//						throw;
					dp[i][j] += havePoint(k, i, j);
				}
				dp[j][i] = -dp[i][j];
			}
		}
	}
	for(int i = 1; i <= n; ++i) {
		for(int j = i + 1; j <= n; ++j) {
			for(int k = j + 1; k <= n; ++k) {
				ans += abs(dp[i][j] + dp[j][k] + dp[k][i]) == havePoint(k, i, j) + havePoint(i, j, k) + havePoint(j, k, i);
			}
		}
	}
}

int main() {
	//freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
	//freopen("distance.in", "r", stdin); freopen("distance.out", "w", stdout);
	cin >> n;
	for(int i = 1; i <= n; ++i) {
		cin >> x[i] >> y[i];
	}
	Solve();
	cout << ans << endl;
	return 0;
}