#include <bits/stdc++.h>
using namespace std;
map < long long , int > cnt;
class PlaneGame
{
public : int bestShot( vector < int > x, vector < int > y)
{
int n = x.size ( ) ;
int ans = min( n, 1 ) ;
for ( int i = 0 ; i < n; i++ )
for ( int j = i+ 1 ; j < n; j++ )
{
long long dx = x[ i] - x[ j] ;
long long dy = y[ i] - y[ j] ;
long long dx2 = dy;
long long dy2 = - dx;
long long val = x[ i] * dx2 + y[ i] * dy2;
int cntOnLine = 0 ;
int maxPerpendicular = 0 ;
cnt.clear ( ) ;
for ( int k = 0 ; k < n; k++ )
if ( x[ k] * dx2 + y[ k] * dy2 == val)
cntOnLine ++ ;
else
{
long long v = x[ k] * dx + y[ k] * dy;
cnt[ v] ++ ;
maxPerpendicular = max( maxPerpendicular, cnt[ v] ) ;
}
ans = max( ans, maxPerpendicular + cntOnLine) ;
}
return ans;
}
} ;
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgptYXAgPCBsb25nIGxvbmcgLCBpbnQgPiBjbnQ7CgpjbGFzcyBQbGFuZUdhbWUKewoJcHVibGljOglpbnQgYmVzdFNob3QodmVjdG9yIDxpbnQ+IHgsIHZlY3RvciA8aW50PiB5KQoJewoJCWludCBuID0geC5zaXplKCk7CgkJaW50IGFucyA9IG1pbihuLCAxKTsKCQlmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCQlmb3IoaW50IGogPSBpKzE7IGogPCBuOyBqKyspCgkJCXsKCQkJCWxvbmcgbG9uZyBkeCA9IHhbaV0gLSB4W2pdOwoJCQkJbG9uZyBsb25nIGR5ID0geVtpXSAtIHlbal07CgkJCQlsb25nIGxvbmcgZHgyID0gZHk7CgkJCQlsb25nIGxvbmcgZHkyID0gLWR4OwoJCQkJbG9uZyBsb25nIHZhbCA9IHhbaV0gKiBkeDIgKyB5W2ldICogZHkyOwoJCQkJaW50IGNudE9uTGluZSA9IDA7CgkJCQlpbnQgbWF4UGVycGVuZGljdWxhciA9IDA7CgkJCQljbnQuY2xlYXIoKTsKCQkJCWZvcihpbnQgayA9IDA7IGsgPCBuOyBrKyspCgkJCQkJaWYoeFtrXSAqIGR4MiArIHlba10gKiBkeTIgPT0gdmFsKQoJCQkJCQljbnRPbkxpbmUgKys7CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJbG9uZyBsb25nIHYgPSB4W2tdICogZHggKyB5W2tdICogZHk7CgkJCQkJCWNudFt2XSArKzsKCQkJCQkJbWF4UGVycGVuZGljdWxhciA9IG1heChtYXhQZXJwZW5kaWN1bGFyLCBjbnRbdl0pOwoJCQkJCX0KCQkJCWFucyA9IG1heChhbnMsIG1heFBlcnBlbmRpY3VsYXIgKyBjbnRPbkxpbmUpOwoJCQl9CgkJcmV0dXJuIGFuczsKCX0KfTsK