#line 1 "/mnt/c/Users/leafc/dev/compro/lib/template.hpp" #include #define REP(i, n) for (int i = 0; i < n; i++) #define FOR(i, m, n) for (int i = m; i < n; i++) #define ALL(v) (v).begin(), (v).end() #define coutd(n) cout << fixed << setprecision(n) #define ll long long int #define vl vector #define vi vector #define MM << " " << using namespace std; template void say(bool val, T yes = "Yes", T no = "No") { cout << (val ? yes : no) << endl; } template void chmin(T &a, T b) { if (a > b) a = b; } template void chmax(T &a, T b) { if (a < b) a = b; } #line 2 "tmp.cpp" int main() { cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; vi x(n), y(n); REP(i, n) { cin >> x[i] >> y[i]; } int ans = 0; REP(i, n) { FOR(j, i + 1, n) { int tmp = 0; if (x[i] != x[j] && y[i] != y[j]) { REP(k, n) { if (y[k] == y[i] || x[k] == x[i]) continue; if ((y[k] - y[i]) * (y[i] - y[j]) == (x[k] - x[i]) * (x[i] - x[j])) tmp++; } } else if (x[i] == x[j]) { REP(k, n) { if (x[i] == x[k]) tmp++; } } else if (y[i] == y[j]) { REP(k, n) { if (y[i] == y[k]) tmp++; } } chmax(ans, tmp); } } cout << ans << endl; return 0; }