#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int lint; #define rep(i, n) for (lint i = 0; i < n; i++) #define sort(v) sort((v).begin(), (v).end()) #define reverse(v) reverse((v).begin(), (v).end()) #define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge) #define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge) #define llower(v,hoge) *lower_bound(v.begin(), v.end(), hoge) #define lupper(v,hoge) *upper_bound(v.begin(), v.end(), hoge) #define mp make_pair #define IP pair #define enld endl int main() { lint N; cin >> N; vectorX(N); vectorY(N); rep(i, N) { cin >> X[i] >> Y[i]; } lint ans = 0; lint cnt = 0; rep(i, N) { rep(j, N) { if (X[i] - X[j] != 0) { double a = (Y[i] - Y[j]) / (X[i] - X[j]); double b = Y[i] - a * X[i]; rep(ii, N) { if (Y[ii] == a * X[ii] + b) { cnt++; } } ans = max(ans, cnt); cnt = 0; } } } rep(t, 101) { rep(i, N) { if (X[i] == t) { cnt++; } } ans = max(ans, cnt); cnt = 0; } cout << ans << endl; }