/*
V V EEEEE GGG III A K K
V V E G I A A K KK
V V EEEE G GGG I AAAAA KK
V V E G G I A A K KK
V EEEEE GGG III A A K K
*/
#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f
#define delta 0.996
#define mod 998244353
#define cp complex<double>
using namespace std;
int n,k=1,s[100005],num=2,ans,px,py;
struct node{
int x,y;
}a[100005];
bool cmp(node x,node y)
{
double A=atan2((x.y-py),(x.x-px));
double B=atan2((y.y-py),(y.x-px));
if(A!=B)return A<B;
else return x.x<y.x;
}
int mtp(node x1,node x2,node y1,node y2)
{
return (x2.x-x1.x)*(y2.y-y1.y)-(y2.x-y1.x)*(x2.y-x1.y);
}
int dis(node x,node y)
{
return (x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y);
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].x>>a[i].y;
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]);
px=a[1].x,py=a[1].y;
sort(a+2,a+n+1,cmp);
s[1]=1;
s[2]=2;
for(int i=3;i<=n;i++)
{
while(num>1&&mtp(a[s[num-1]],a[s[num]],a[s[num]],a[i])<=0)
{
//cout<<"pop"<<s[num]<<endl;
num--;
}
num++;
s[num]=i;
//cout<<"add"<<i<<"("<<a[1].x<<","<<a[i].y<<")"<<endl;
}
if(num==2)
{
cout<<dis(a[s[1]],a[s[2]])<<endl;
return 0;
}
s[num+1]=s[1];
int j=2;
for(int i=1;i<=num;i++)
{
while(mtp(a[s[j]],a[s[i]],a[s[j]],a[s[i+1]])<mtp(a[s[j+1]],a[s[i]],a[s[j+1]],a[s[i+1]]))j=(j+1)%num;
ans=max(ans,max(dis(a[s[i]],a[s[j]]),dis(a[s[i+1]],a[s[j]])));
}
cout<<ans<<endl;
return 0;
}