#include #define rep(i,a,b) for(int i=int(a);i<=int(b);++i) using namespace std; templatevoid pr(A a){cout << (a) << endl;} templatevoid pr(A a,B b){cout << a << " " ;pr(b);} templatevoid pr(A a,B b,C c){cout << a << " " ;pr(b,c);} templatevoid pr(A a,B b,C c,D d){cout << a << " " ;pr(b,c,d);} typedef long long ll; typedef pair l_l; typedef pair i_i; int INF=numeric_limits::max(); // for(int j=0;j>n; vector xy; int x,y; rep(i,0,n-1) { cin>>x>>y; xy.push_back({x,y}); } unordered_map> M; rep(i,0,n-1) { rep(j,i+1,n-1) { i_i f,l; f = xy[i]; l = xy[j]; int x1,x2,y1,y2; x1 = f.first; y1 = f.second; x2 = l.first; y2 = l.second; double a,b; if(x2-x1==0) { a = 1; b = 10000000 + x1; } else { a = (1.0*(y2-y1))/(x2-x1); b = (1.0*(x2*y1-x1*y2))/(x2-x1); } M[a][b]++; } } ll ans=0; for(auto m:M) { for(auto m1:m.second) { ans = max(ans, m1.second); // pr(m.first,m1.first,m1.second); } } // pr(ans); ans = sqrt(8*ans+1)/2.0 + 0.5; pr(ans); return 0; }