#4 #6#9#10#11#13#14都没有过,有没有好心人帮我康康是哪里写错了
#include<bits/stdc++.h>
using namespace std;
struct node{
long long x,y;
}a[100005],p[100005];
bool cmp(node x,node y){
long long A=atan2(x.y-a[1].y,x.x-a[1].x);
long long B=atan2(y.y-a[1].y,y.x-a[1].x);
// cout<<A<<" "<<B<<endl;
if(A!=B)return A<B;
if(x.x!=y.x)return x.x<y.x;
return x.y<y.y;
}
long long cal(node x,node y,node z){
return (y.x-x.x)*(z.y-y.y)-(y.y-x.y)*(z.x-y.x);
}
long long cal1(node x,node y,node z){
return abs((x.x-z.x)*(y.y-z.y)-(x.y-z.y)*(y.x-z.x));
}
long long dis(node x,node y){
return (y.x-x.x)*(y.x-x.x)+(y.y-x.y)*(y.y-x.y);
}
long long read(){
long long a=0,x=1;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')x=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
a=(a<<1)+(a<<3)+(ch^48);
ch=getchar();
}
return a*x;
}
int n,k;
long long ans;
int main(){
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
n=read();
k=1;
for(int i=1;i<=n;i++){
a[i].x=read(),a[i].y=read();
if(a[i].y>a[k].y||(a[i].y==a[k].y&&a[i].x<a[k].x))k=i;
}
swap(a[1],a[k]);
sort(a+2,a+n+1,cmp);
p[0]=a[1],p[1]=a[2];
int tot=1;
for(int i=3;i<=n;i++){
while(tot&&cal(p[tot-1],p[tot],a[i])<0)tot--;
p[++tot]=a[i];
}
// cout<<"ok"<<endl;
p[++tot]=p[0];
int j=2;
if(tot<=3){
cout<<dis(p[0],p[1]);
return 0;
}
// for(int i=0;i<tot;i++){
// cout<<p[i].x<<" "<<p[i].y<<endl;
// }
for(int i=0;i<tot;i++){
while(cal1(p[i],p[i+1],p[j])<cal1(p[i],p[i+1],p[(j+1)%tot])){
j=(j+1)%tot;
// cout<<j<<endl;
}
ans=max(ans,max(dis(p[i],p[j]),dis(p[i+1],p[j])));
}
cout<<ans;
return 0;
}