import java.io.*;
import java.util.*;
public class TaskE_n2log {
private final InputReader reader;
private final OutputWriter writer;
public TaskE_n2log(InputReader reader, OutputWriter writer) {
this.reader = reader;
this.writer = writer;
}
public static void main
(String[] args
) { InputReader reader
= new InputReader
(System.
in); OutputWriter writer
= new OutputWriter
(System.
out); new TaskE_n2log(reader, writer).run();
writer.writer.flush();
}
int[][] gcd;
int mygcd(int a, int b) {
}
public void run() {
int n = reader.nextInt();
int ans = (int) (n * (n - 1) * 1l * (n - 2) / 6);
gcd = new int[201][201];
gcd[0][0] = 0;
for (int i = 0; i <= 200; i++) {
gcd[i][i] = i;
for (int j = 0; j < i; j++)
gcd[j][i] = gcd[i][j] = (j == 0) ? i : gcd[j][i % j];
}
int[] X = new int[n], Y = new int[n];
for (int i = 0; i < n; i++) {
X[i] = reader.nextInt();
Y[i] = reader.nextInt();
}
long[] H = new long[n * (n - 1) / 2];
int hpt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
int A = Y[i] - Y[j], B = -X[i] + X[j];
int C = A * X[i] + B * Y[i];
int g = mygcd(A, B);
A /= g;
B /= g;
C /= g;
if (A < 0 || (A == 0 && B < 0)) {
A = -A;
B = -B;
C = -C;
}
long hsh = C * 500 * 1l * 500 + (A + 250) * 500 + B;
H[hpt++] = hsh;
}
}
int[] cnt = new int[n * n];
for (int i = 2; i <= n; i++)
cnt[i * (i - 1) / 2] = i;
for (int l = 0, r = 0; l < H.length; l = r) {
while (r != H.length && H[l] == H[r])
r++;
int q = r - l;
int v = cnt[r - l];
ans -= v * (v - 1) * 1l * (v - 2) / 6;
}
writer.printf("%d\n", ans);
}
static class InputReader {
tokenizer = null;
}
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
}
}
return tokenizer.nextToken();
}
public int nextInt() {
}
public double nextDouble() {
return Double.
parseDouble(next
()); }
public long nextLong() {
return Long.
parseLong(next
()); }
}
static class OutputWriter {
}
}
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIFRhc2tFX24ybG9nIHsKICAgIHByaXZhdGUgZmluYWwgSW5wdXRSZWFkZXIgcmVhZGVyOwogICAgcHJpdmF0ZSBmaW5hbCBPdXRwdXRXcml0ZXIgd3JpdGVyOwoKICAgIHB1YmxpYyBUYXNrRV9uMmxvZyhJbnB1dFJlYWRlciByZWFkZXIsIE91dHB1dFdyaXRlciB3cml0ZXIpIHsKICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjsKICAgICAgICB0aGlzLndyaXRlciA9IHdyaXRlcjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgSW5wdXRSZWFkZXIgcmVhZGVyID0gbmV3IElucHV0UmVhZGVyKFN5c3RlbS5pbik7CiAgICAgICAgT3V0cHV0V3JpdGVyIHdyaXRlciA9IG5ldyBPdXRwdXRXcml0ZXIoU3lzdGVtLm91dCk7CiAgICAgICAgbmV3IFRhc2tFX24ybG9nKHJlYWRlciwgd3JpdGVyKS5ydW4oKTsKICAgICAgICB3cml0ZXIud3JpdGVyLmZsdXNoKCk7CiAgICB9CgogICAgaW50W11bXSBnY2Q7CgogICAgaW50IG15Z2NkKGludCBhLCBpbnQgYikgewogICAgICAgIHJldHVybiBnY2RbTWF0aC5hYnMoYSldW01hdGguYWJzKGIpXTsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBydW4oKSB7CiAgICAgICAgaW50IG4gPSByZWFkZXIubmV4dEludCgpOwogICAgICAgIGludCBhbnMgPSAoaW50KSAobiAqIChuIC0gMSkgKiAxbCAqIChuIC0gMikgLyA2KTsKICAgICAgICBnY2QgPSBuZXcgaW50WzIwMV1bMjAxXTsKICAgICAgICBnY2RbMF1bMF0gPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDIwMDsgaSsrKSB7CiAgICAgICAgICAgIGdjZFtpXVtpXSA9IGk7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgICAgICAgICAgZ2NkW2pdW2ldID0gZ2NkW2ldW2pdID0gKGogPT0gMCkgPyBpIDogZ2NkW2pdW2kgJSBqXTsKICAgICAgICB9CiAgICAgICAgaW50W10gWCA9IG5ldyBpbnRbbl0sIFkgPSBuZXcgaW50W25dOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIFhbaV0gPSByZWFkZXIubmV4dEludCgpOwogICAgICAgICAgICBZW2ldID0gcmVhZGVyLm5leHRJbnQoKTsKICAgICAgICB9CiAgICAgICAgbG9uZ1tdIEggPSBuZXcgbG9uZ1tuICogKG4gLSAxKSAvIDJdOwogICAgICAgIGludCBocHQgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgaisrKSB7CiAgICAgICAgICAgICAgICBpbnQgQSA9IFlbaV0gLSBZW2pdLCBCID0gLVhbaV0gKyBYW2pdOwogICAgICAgICAgICAgICAgaW50IEMgPSBBICogWFtpXSArIEIgKiBZW2ldOwogICAgICAgICAgICAgICAgaW50IGcgPSBteWdjZChBLCBCKTsKICAgICAgICAgICAgICAgIEEgLz0gZzsKICAgICAgICAgICAgICAgIEIgLz0gZzsKICAgICAgICAgICAgICAgIEMgLz0gZzsKICAgICAgICAgICAgICAgIGlmIChBIDwgMCB8fCAoQSA9PSAwICYmIEIgPCAwKSkgewogICAgICAgICAgICAgICAgICAgIEEgPSAtQTsKICAgICAgICAgICAgICAgICAgICBCID0gLUI7CiAgICAgICAgICAgICAgICAgICAgQyA9IC1DOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbG9uZyBoc2ggPSBDICogNTAwICogMWwgKiA1MDAgKyAoQSArIDI1MCkgKiA1MDAgKyBCOwogICAgICAgICAgICAgICAgSFtocHQrK10gPSBoc2g7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQXJyYXlzLnNvcnQoSCk7CgogICAgICAgIGludFtdIGNudCA9IG5ldyBpbnRbbiAqIG5dOwogICAgICAgIEFycmF5cy5maWxsKGNudCwgLTEpOwogICAgICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgY250W2kgKiAoaSAtIDEpIC8gMl0gPSBpOwoKICAgICAgICBmb3IgKGludCBsID0gMCwgciA9IDA7IGwgPCBILmxlbmd0aDsgbCA9IHIpIHsKICAgICAgICAgICAgd2hpbGUgKHIgIT0gSC5sZW5ndGggJiYgSFtsXSA9PSBIW3JdKQogICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICBpbnQgcSA9IHIgLSBsOwogICAgICAgICAgICBpbnQgdiA9IGNudFtyIC0gbF07CiAgICAgICAgICAgIGFucyAtPSB2ICogKHYgLSAxKSAqIDFsICogKHYgLSAyKSAvIDY7CiAgICAgICAgfQogICAgICAgIHdyaXRlci5wcmludGYoIiVkXG4iLCBhbnMpOwogICAgfQoKCiAgICBzdGF0aWMgY2xhc3MgSW5wdXRSZWFkZXIgewogICAgICAgIHB1YmxpYyBCdWZmZXJlZFJlYWRlciByZWFkZXI7CiAgICAgICAgcHVibGljIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXI7CgogICAgICAgIHB1YmxpYyBJbnB1dFJlYWRlcihJbnB1dFN0cmVhbSBzdHJlYW0pIHsKICAgICAgICAgICAgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihzdHJlYW0pLCAzMjc2OCk7CiAgICAgICAgICAgIHRva2VuaXplciA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgU3RyaW5nIG5leHQoKSB7CiAgICAgICAgICAgIHdoaWxlICh0b2tlbml6ZXIgPT0gbnVsbCB8fCAhdG9rZW5pemVyLmhhc01vcmVUb2tlbnMoKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHJlYWRlci5yZWFkTGluZSgpKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdG9rZW5pemVyLm5leHRUb2tlbigpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGludCBuZXh0SW50KCkgewogICAgICAgICAgICByZXR1cm4gSW50ZWdlci5wYXJzZUludChuZXh0KCkpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIGRvdWJsZSBuZXh0RG91YmxlKCkgewogICAgICAgICAgICByZXR1cm4gRG91YmxlLnBhcnNlRG91YmxlKG5leHQoKSk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgbG9uZyBuZXh0TG9uZygpIHsKICAgICAgICAgICAgcmV0dXJuIExvbmcucGFyc2VMb25nKG5leHQoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBjbGFzcyBPdXRwdXRXcml0ZXIgewogICAgICAgIHB1YmxpYyBQcmludFdyaXRlciB3cml0ZXI7CgogICAgICAgIE91dHB1dFdyaXRlcihPdXRwdXRTdHJlYW0gc3RyZWFtKSB7CiAgICAgICAgICAgIHdyaXRlciA9IG5ldyBQcmludFdyaXRlcihzdHJlYW0pOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHZvaWQgcHJpbnRmKFN0cmluZyBmb3JtYXQsIE9iamVjdC4uLiBhcmdzKSB7CiAgICAgICAgICAgIHdyaXRlci5wcmludChTdHJpbmcuZm9ybWF0KExvY2FsZS5FTkdMSVNILCBmb3JtYXQsIGFyZ3MpKTsKICAgICAgICB9CiAgICB9Cn0KCg==