#include <bits/stdc++.h>
using namespace std;
int v[100005];
struct lined{
int k,b;
};
struct point{
double kk,bb;
};
int main()
{
lined line[1004];
int n; cin >> n;
int cnt1 = 0;
for(int i = 1; i <= n; i++){
cin >> line[i].k >> line[i].b;
if(v[line[i].k]) cnt1 = cnt1 + 1 + cnt1;
v[line[i].k] = 1;
}
set <point> s;
point o;
int cnt2 = 0;
for(int i = 1; i <= n; i++)
for(int j = i-1; j >= 1; j--){
int k1 = line[i].k, k2 = line[j].k;
int b1 = line[i].b, b2 = line[j].b;
o.kk = (double)(b2 - b1) / (k1 - k2);
o.bb = (double)k1 * ((b2 - b1) / (k1 - k2)) + b1;
if(s.find(o) == s.end()) cnt2 = cnt2 + 1 + cnt2;
s.insert(o);
}
long long ans = 1 + (long long)n*(n+1)/2 - cnt1 - cnt2;
cout << ans << endl;
}