#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define double long double
ll nCr(ll n,ll r)
{
ll ret=1;
for(ll i=r+1;i<=n;i++)
{
ret*=i;
ret/=(i-r);
}
return ret;
}
struct point{
int x,y;
};
bool double_compare(double a,double b)
{
double EPS=1e-12;
if(fabs(a-b)<=EPS)
{
return 1;
}
return 0;
}
double mail(point a,point b)
{
if(a.x==b.x) return 1e10;
return 1.0*(a.y-b.y)/(a.x-b.x);
}
bool is_same_line(point a,point b,point c)
{
double s[]={mail(a,b),mail(b,c),mail(a,c)};
return (double_compare(s[0],s[2])&&double_compare(s[0],s[1])&&double_compare(s[1],s[2]));
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n;cin>>n;
if(n<4)
{
cout<<0;
return 0;
}
ll ans=nCr(n,4);
map<multiset<int>,int>vis;
point s[n];
for(int i=0;i<n;i++)
{
cin>>s[i].x>>s[i].y;
}
for(int i=0;i<n-2;i++)
{
for(int o=i+1;o<n-1;o++)
{
for(int p=o+1;p<n;p++)
{
if(is_same_line(s[i],s[o],s[p]))
{
ans-=n-3-max({vis[{i,o}],vis[{i,p}],vis[{p,o}]});
vis[{i,o}]++;
vis[{i,p}]++;
vis[{p,o}]++;
}
}
}
}
cout<<ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZG91YmxlIGxvbmcgZG91YmxlCmxsIG5DcihsbCBuLGxsIHIpCnsKICAgIGxsIHJldD0xOwogICAgZm9yKGxsIGk9cisxO2k8PW47aSsrKQogICAgewogICAgICAgIHJldCo9aTsKICAgICAgICByZXQvPShpLXIpOwogICAgfQogICAgcmV0dXJuIHJldDsKfQpzdHJ1Y3QgcG9pbnR7CiAgICBpbnQgeCx5Owp9Owpib29sIGRvdWJsZV9jb21wYXJlKGRvdWJsZSBhLGRvdWJsZSBiKQp7CiAgICBkb3VibGUgRVBTPTFlLTEyOwogICAgaWYoZmFicyhhLWIpPD1FUFMpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsKfQpkb3VibGUgbWFpbChwb2ludCBhLHBvaW50IGIpCnsKICAgIGlmKGEueD09Yi54KSByZXR1cm4gMWUxMDsKICAgIHJldHVybiAxLjAqKGEueS1iLnkpLyhhLngtYi54KTsKfQpib29sIGlzX3NhbWVfbGluZShwb2ludCBhLHBvaW50IGIscG9pbnQgYykKewogICAgZG91YmxlIHNbXT17bWFpbChhLGIpLG1haWwoYixjKSxtYWlsKGEsYyl9OwogICAgcmV0dXJuIChkb3VibGVfY29tcGFyZShzWzBdLHNbMl0pJiZkb3VibGVfY29tcGFyZShzWzBdLHNbMV0pJiZkb3VibGVfY29tcGFyZShzWzFdLHNbMl0pKTsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCBuO2Npbj4+bjsKICAgIGlmKG48NCkKICAgIHsKICAgICAgICBjb3V0PDwwOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgbGwgYW5zPW5DcihuLDQpOwogICAgbWFwPG11bHRpc2V0PGludD4saW50PnZpczsKICAgIHBvaW50IHNbbl07CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgewogICAgICAgIGNpbj4+c1tpXS54Pj5zW2ldLnk7CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPG4tMjtpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBvPWkrMTtvPG4tMTtvKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IHA9bysxO3A8bjtwKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGlzX3NhbWVfbGluZShzW2ldLHNbb10sc1twXSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYW5zLT1uLTMtbWF4KHt2aXNbe2ksb31dLHZpc1t7aSxwfV0sdmlzW3twLG99XX0pOwogICAgICAgICAgICAgICAgICAgIHZpc1t7aSxvfV0rKzsKICAgICAgICAgICAgICAgICAgICB2aXNbe2kscH1dKys7CiAgICAgICAgICAgICAgICAgICAgdmlzW3twLG99XSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dDw8YW5zOwogICAgcmV0dXJuIDA7Cn0=