#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//每多一条直线,该直线对平面的贡献度为 该直线与已有直线的交点的个数+1
//累加所有直线对平面贡献度即为把平面分成了几部分
//1.set集合记录交点
//2.注意新加边为重边要跳过,之前边为重边只算一次交点
ll ans=0;
long double s[1010][2];
bool st[1010]; //标记是否重边
pair<long double, long double> p;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s[i][0] >> s[i][1];
set<pair<long double, long double>> points;
for (int j = 0; j < i; j++)
{
//求每条新加直线与已有直线的关系
if (st[j]) continue;//之前的重边只算一次
if (s[j][0] == s[i][0])//斜率相等
{
if (s[j][1] == s[i][1])//截距也相等,说明新加边为重边
{
st[i] = true;//标记重边
break;
}
else//平行
{
continue;
}
}
else//求交点并加入集合p
{
long double x = (s[j][1] - s[i][1]) / (s[i][0] - s[j][0]);
long double y = s[i][0] * x + s[i][1];
p.first = x;
p.second = y;
points.insert(p);
}
}
if (!st[i]) ans += points.size() + 1;
}
cout << ans+1;
return 0;
}