#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
// author : buddy (tu luong)
//------------------------------
#define fo(i,a,b) for(int i=a;i<=b;++i)
#define fo1(i,a,b) for (int i=a;i<b;++i)
#define N 2001
#define INF 100001
#define fi first
#define se second
#define fast_IO ios_base::sync_with_stdio(false); cin.tie(NULL);
#define pb push_back
#define mp make_pair
#define double int
struct point
{
double x,y;
point(double _x=0, double _y=0)
{
x=_x;
y=_y;
}
/* bool operator <(const point &tmp) const
{
return(x<tmp.x);
} */
};
bool cmp( point &a1, point &b1)
{
return(a1.x<b1.x);
}
double kt( point a1, point a2, point a3 )
{
double tmp = a1.x * (a2.y - a3.y);
double tmp1= a2.x * (a3.y - a1.y);
double tmp2=a3.x * (a1.y - a2.y);
double s=tmp+tmp1+tmp2 ;
return(s);
}
/*bool kt(const point &a,const point &b)
{
} */
int n,ans=0;
point a[N];
int main()
{
// fast_IO
cin>>n;
fo(i,1,n)
{
cin>>a[i].x>>a[i].y;
}
sort(a+1,a+1+n,cmp);
/* fo(i,1,n)
c[i][1]=i;
//fo(i,1,3)
//c[0][i]=1;
fo(i,1,n)
fo(j,2,3)
c[i][j]=c[i-1][j-1]+c[i-1][j]; */
for (int i=1;i<=n-2;++i)
{
int j=i,cnt=0;
while (a[j].x==a[j+1].x && a[j].x==a[j+2].x)
{
++cnt;
++j;
}
for (int i1=1;i1<=cnt;++i1) ans+=i1;
//if (i==1|| a[i-1].x!=a[i].x) ans+=c[j-i][3];
//if (c[j-1][3]!=0) cout<<c[j-1][3]<<endl;
for (int i2=j+1;i2<=n-1;++i2)
for (int i3=i2+1;i3<=n;++i3)
if (kt(a[i],a[i2],a[i3])==0)
++ans; //cout<<i1<<' '<<i2<<' '<<i3<<endl; }
}
cout<<ans;
// cout<<c[3][3];
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8gYXV0aG9yIDogYnVkZHkgKHR1IGx1b25nKQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojZGVmaW5lIGZvKGksYSxiKSBmb3IoaW50IGk9YTtpPD1iOysraSkKI2RlZmluZSBmbzEoaSxhLGIpIGZvciAoaW50IGk9YTtpPGI7KytpKQojZGVmaW5lIE4gMjAwMQojZGVmaW5lIElORiAxMDAwMDEKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZhc3RfSU8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZG91YmxlIGludApzdHJ1Y3QgcG9pbnQKewogICAgZG91YmxlIHgseTsKICAgIHBvaW50KGRvdWJsZSBfeD0wLCBkb3VibGUgX3k9MCkKICAgIHsKICAgICAgICB4PV94OwogICAgICAgIHk9X3k7CiAgICB9CiAgIC8qIGJvb2wgb3BlcmF0b3IgPChjb25zdCBwb2ludCAmdG1wKSBjb25zdAogICAgewogICAgICAgIHJldHVybih4PHRtcC54KTsKICAgIH0gKi8KfTsKYm9vbCBjbXAoIHBvaW50ICZhMSwgcG9pbnQgJmIxKQp7CiAgICByZXR1cm4oYTEueDxiMS54KTsKfQpkb3VibGUga3QoIHBvaW50IGExLCBwb2ludCBhMiwgIHBvaW50IGEzICkKewogICAgIGRvdWJsZSB0bXAgPSBhMS54ICogKGEyLnkgLSBhMy55KTsKICAgIGRvdWJsZSB0bXAxPSBhMi54ICogKGEzLnkgLSBhMS55KTsKICAgIGRvdWJsZSB0bXAyPWEzLnggKiAoYTEueSAtIGEyLnkpOwogICAgICBkb3VibGUgcz10bXArdG1wMSt0bXAyIDsKICAgICAgcmV0dXJuKHMpOwp9Ci8qYm9vbCBrdChjb25zdCBwb2ludCAmYSxjb25zdCBwb2ludCAmYikKewoKfSAqLwppbnQgbixhbnM9MDsKcG9pbnQgYVtOXTsKaW50IG1haW4oKQp7CiAgIC8vIGZhc3RfSU8KICAgIGNpbj4+bjsKICAgIGZvKGksMSxuKQogICAgewogICAgICAgIGNpbj4+YVtpXS54Pj5hW2ldLnk7CiAgICB9CiAgICBzb3J0KGErMSxhKzErbixjbXApOwogIC8qIGZvKGksMSxuKQogICBjW2ldWzFdPWk7CiAgIC8vZm8oaSwxLDMpCiAgIC8vY1swXVtpXT0xOwogICBmbyhpLDEsbikKICAgZm8oaiwyLDMpCiAgIGNbaV1bal09Y1tpLTFdW2otMV0rY1tpLTFdW2pdOyAqLwogICBmb3IgKGludCBpPTE7aTw9bi0yOysraSkKICAgewoKICAgICAgIGludCBqPWksY250PTA7CiAgICAgICB3aGlsZSAoYVtqXS54PT1hW2orMV0ueCAmJiBhW2pdLng9PWFbaisyXS54KQogICAgICAgewogICAgICAgICsrY250OwogICAgICAgICsrajsKICAgICAgIH0KICAgICAgIGZvciAoaW50IGkxPTE7aTE8PWNudDsrK2kxKSBhbnMrPWkxOwogICAgICAgLy9pZiAoaT09MXx8IGFbaS0xXS54IT1hW2ldLngpIGFucys9Y1tqLWldWzNdOwogICAgICAgLy9pZiAoY1tqLTFdWzNdIT0wKSBjb3V0PDxjW2otMV1bM108PGVuZGw7CiAgICAgICBmb3IgKGludCBpMj1qKzE7aTI8PW4tMTsrK2kyKQogICAgICAgZm9yIChpbnQgaTM9aTIrMTtpMzw9bjsrK2kzKQogICAgICAgaWYgKGt0KGFbaV0sYVtpMl0sYVtpM10pPT0wKQogICAgICAgICsrYW5zOyAvL2NvdXQ8PGkxPDwnICc8PGkyPDwnICc8PGkzPDxlbmRsOyB9CiAgIH0KICAgY291dDw8YW5zOwogLy8gIGNvdXQ8PGNbM11bM107Cgp9Cg==