type s=record
x,y:longint;
end;
var a:array[1..105]of s;i,j,n,max,ans:longint;
procedure deal(x,y:longint);
var k:longint;
begin
ans:=0;
for k:=1 to n do
if (a[x].x-a[k].x)*(a[k].y-a[y].y)=(a[x].y-a[k].y)*(a[k].x-a[y].x)
then inc(ans);
end;
begin
assign(input,'asm_fuel.in');
assign(output,'asm_fuel.out');
reset(input);
rewrite(output);
max:=-maxlongint;
read(n);
for i:=1 to n do
read(a[i].x,a[i].y);
for i:=2 to n do
for j:=i-1 downto 1 do
if (a[i].x<>a[j].x)or(a[i].y<>a[j].y) then
begin
deal(i,j);
//writeln('<',i,',',j,'>__',ans);
if ans>max then max:=ans;
end;
write(max);
close(input);
close(output);
end.