program mike;
var x,y:array[1..5000]of longint;
n,ans:longint;
s,t:array[-10000..10000]of longint;
procedure prepare;
var i:longint;
begin
s[x[1]]:=1;
t[x[n]]:=n;
for i:=1 to n do
begin
if (i<>1)and(x[i-1]<>x[i]) then s[x[i]]:=i;
if (i<>n)and(x[i+1]<>x[i]) then t[x[i]]:=i;
end;
end;
function find(i,j:longint):boolean;
var k:longint;
begin
if (i<-10000)or(i>10000)or(j<-10000)or(j>10000) then exit(false);
if (s[i]=0)or(t[i]=0) then exit(false);
for k:=s[i] to t[i] do
if y[k]=j then exit(true);
exit(false);
end;
procedure qsort(l,r:longint);
var i,j,p,q,o:longint;
begin
i:=l;j:=r;
p:=x[(l+r)shr 1];
o:=y[(l+r)shr 1];
repeat
while (x[i]<p)or((x[i]=p)and(y[i]<o)) do inc(i);
while (x[j]>p)or((x[j]=p)and(y[j]>o)) do dec(j);
if i<=j then begin
q:=x[i];x[i]:=x[j];x[j]:=q;
q:=y[i];y[i]:=y[j];y[j]:=q;
inc(i);dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if j>l then qsort(l,j);
end;
function gcd(a,b:longint):longint;
begin
if b=0 then exit(a);
exit(gcd(b,a mod b));
end;
{function find(i,j:longint):boolean;
var l,r,mid:longint;
begin
l:=1;r:=n;
if (i<-10000)or(i>10000)or(j<-10000)or(j>10000) then exit(false);
while l<=r do
begin
mid:=(l+r)shr 1;
if (x[mid]=i)and(y[mid]=j) then exit(true);
if (x[mid]>i)or((x[mid]=i)and(y[mid]>j)) then
r:=mid-1;
if (x[mid]<i)or((x[mid]=i)and(y[mid]<j)) then
l:=mid+1;
end;
exit(false);
end; }
procedure init;
var i:longint;
begin
read(n);
for i:=1 to n do
begin
read(x[i]);read(y[i]);
end;
qsort(1,n);
end;
function test(u,v,p,q:longint):boolean;
var xx,yy,i:longint;
begin
xx:=x[u]+p-x[v];
yy:=y[u]+q-y[v];
if find(xx,yy) then exit(true);
exit(false);
end;
procedure cal(u,v,p,q:longint);
var i,j,sq,a,b:longint;
begin
sq:=(x[u]-x[v])*(x[u]-x[v])+(y[u]-y[v])*(y[u]-y[v]);
i:=x[u]-x[v]; i:=abs(i);
j:=y[u]-y[v]; j:=abs(j);
b:=gcd(i,j);
i:=p-x[v]; i:=abs(i);
j:=q-y[v]; j:=abs(j);
b:=b+gcd(i,j);
a:=sq+1-b;
if a+2*b>ans then ans:=a+2*b;
end;
procedure main;
var i,j,k,p,q,xx,yy,qqq:longint;
begin
ans:=0;
for i:=1 to n do
begin
qqq:=0;
for j:=i+1 to n do
begin
p:=x[i]-x[j];
q:=y[i]-y[j];
xx:=x[j]+q;
yy:=y[j]-p;
if find(xx,yy) then
if test(i,j,xx,yy) then cal(i,j,xx,yy);
xx:=x[j]-q;
yy:=y[j]+p;
if find(xx,yy) then
if test(i,j,xx,yy) then cal(i,j,xx,yy);
end;
end;
write(ans);
end;
begin
assign(input,'ss.in');
reset(input);
init;
prepare;
main;
close(input);
end.
评论