#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#define ll long long
using namespace std;
class PlaneGame {
public :
int bestShot( vector < int > , vector < int > ) ;
} ;
int PlaneGame:: bestShot ( vector < int > x, vector < int > y) {
int n = x.size ( ) ;
int ans = 0 ;
if ( n == 1 || n == 2 || n == 3 )
{
return n;
return 0 ;
}
for ( int i = 0 ; i < n; i++ )
{
for ( int j = 0 ; j < n; j++ )
{
for ( int k = 0 ; k < n; k++ )
{
if ( i == j || j == k || k == i)
continue ;
int curans = 3 ;
ll x1 = x[ i] , x2 = x[ j] , x3 = x[ k] ;
ll y1 = y[ i] , y2 = y[ j] , y3 = y[ k] ;
for ( int l = 0 ; l < n; l++ )
{
if ( l == i || l == j || l == k) continue ;
ll x4 = x[ l] , y4 = y[ l] ;
bool b1 = ( ( ( x4- x3) * ( x1- x2) + ( y4- y3) * ( y1- y2) ) == 0 ) ;
bool b2 = ( ( ( y4- y1) * ( x1- x2) ) == ( ( y1- y2) * ( x4- x1) ) ) ;
if ( b1 || b2) curans++ ;
}
ans = max( curans, ans) ;
}
}
}
return ans;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGN0aW1lPgojZGVmaW5lIGxsIGxvbmcgbG9uZwogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY2xhc3MgUGxhbmVHYW1lIHsKcHVibGljOgogIGludCBiZXN0U2hvdCh2ZWN0b3IgPGludD4sIHZlY3RvciA8aW50Pik7Cn07CiAKaW50IFBsYW5lR2FtZTo6YmVzdFNob3QodmVjdG9yIDxpbnQ+IHgsIHZlY3RvciA8aW50PiB5KSB7CiAgaW50IG4gPSB4LnNpemUoKTsKICBpbnQgYW5zID0gMDsKICBpZihuID09IDEgfHwgbiA9PSAyIHx8IG4gPT0gMykKICB7CiAgICByZXR1cm4gbjsKICAgIHJldHVybiAwOwogIH0KICBmb3IoaW50IGkgPSAwO2kgPCBuO2krKykKICB7CiAgICBmb3IoaW50IGogPSAwO2ogPCBuO2orKykKICAgIHsKICAgICAgZm9yKGludCBrID0gMDtrIDwgbjtrKyspCiAgICAgIHsKICAgICAgICBpZihpID09IGogfHwgaiA9PSBrIHx8IGsgPT0gaSkKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGludCBjdXJhbnMgPSAzOwogICAgICAgIGxsIHgxID0geFtpXSwgeDIgPSB4W2pdLCB4MyA9IHhba107CiAgICAgICAgbGwgeTEgPSB5W2ldLCB5MiA9IHlbal0sIHkzID0geVtrXTsKICAgICAgICBmb3IoaW50IGwgPSAwO2wgPCBuO2wrKykKICAgICAgICB7CiAgICAgICAgICBpZihsID09IGkgfHwgbCA9PSBqIHx8IGwgPT0gaykgY29udGludWU7CiAgICAgICAgICBsbCB4NCA9IHhbbF0sIHk0ID0geVtsXTsKICAgICAgICAgIGJvb2wgYjEgPSAoKCh4NC14MykqKHgxLXgyKSsoeTQteTMpKih5MS15MikpID09IDApOwogICAgICAgICAgYm9vbCBiMiA9ICgoKHk0LXkxKSooeDEteDIpKSA9PSAoKHkxLXkyKSooeDQteDEpKSk7CiAgICAgICAgICBpZihiMSB8fCBiMikgY3VyYW5zKys7CiAgICAgICAgfQogICAgICAgIGFucyA9IG1heChjdXJhbnMsIGFucyk7CiAgICAgIH0KICAgIH0KICB9CiAKICByZXR1cm4gYW5zOwp9