#include #define rep(i, n) for (int i = 0; i < (int) n; i++) #define repb(i, n) for (int i = (int) n; i >= 0; i--) #define reps(i, m, n) for (int i = (int) m; i < (int) n; i++) #define repsb(i, m, n) for (int i = (int) m; i >= (int) n; i--) #define SORT(v, n) sort(v, v + n); #define VSORT(v) sort(v.begin(), v.end()); # define pb(a) push_back(a) #define ll long long int int dy[] = { 0, 0, 1, -1, 0 }; int dx[] = { 1, -1, 0, 0, 0 }; template < class T > bool chmax(T & a,const T & b) { if (a < b) { a = b; return 1; } return 0; } template < class T > bool chmin(T & a,const T & b) { if (b < a) { a = b; return 1; } return 0; } //vector> vec(n_rows, vector(n_cols, value)); using namespace std; int main(int argc, char const * argv[]){ int n,ans,cnt; ans = 2; cin >> n; vector > v(n); rep(i,n){ cin >> v[i].first >> v[i].second; } rep(i,n)reps(j,i+1,n){ int dx = v[i].first -v[j].first; int dy = v[i].second - v[j].second; cnt = 0; rep(t, n) { int dxt=v[i].first-v[t].first; int dyt=v[i].second-v[t].second; if(dxt*dy==dx*dyt) { cnt++; } } chmax(ans, cnt); } cout<