#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
struct self{int x,y;}s[40044];
int m,a,b,c,z;
set<double>q;
bool zero=0;
bool ok(int x1,int y1,int x2,int y2)
{
int x=x1-x2;
int y=y1-y2;
if(x==0)
{
if(!zero)
{
zero=1;
return true;
}
return false;
}
if(q.insert(double(y)/x).second)return true;
return false;
}
int main()
{
scanf("%d",&m);
for(a=1;a<=m;a++)scanf("%d%d",&s[a].x,&s[a].y);
for(a=1;a<=m;a++)
for(b=a+1;b<=m;b++)
if(ok(s[a].x,s[a].y,s[b].x,s[b].y))z++;
cout<<z<<'\n';
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHNlbGZ7aW50IHgseTt9c1s0MDA0NF07CmludCBtLGEsYixjLHo7CnNldDxkb3VibGU+cTsKYm9vbCB6ZXJvPTA7Cgpib29sIG9rKGludCB4MSxpbnQgeTEsaW50IHgyLGludCB5MikKewogICAgaW50IHg9eDEteDI7CiAgICBpbnQgeT15MS15MjsKICAgIGlmKHg9PTApCiAgICB7CiAgICAgICAgaWYoIXplcm8pCiAgICAgICAgewogICAgICAgICAgICB6ZXJvPTE7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZihxLmluc2VydChkb3VibGUoeSkveCkuc2Vjb25kKXJldHVybiB0cnVlOwogICAgcmV0dXJuIGZhbHNlOwp9CgoKaW50IG1haW4oKQp7CiAgICBzY2FuZigiJWQiLCZtKTsKICAgIGZvcihhPTE7YTw9bTthKyspc2NhbmYoIiVkJWQiLCZzW2FdLngsJnNbYV0ueSk7CiAgICAKICAgIGZvcihhPTE7YTw9bTthKyspCiAgICAgICAgZm9yKGI9YSsxO2I8PW07YisrKQogICAgICAgIGlmKG9rKHNbYV0ueCxzW2FdLnksc1tiXS54LHNbYl0ueSkpeisrOwogICAgCiAgICBjb3V0PDx6PDwnXG4nOwogICAgcmV0dXJuIDA7Cn0=