#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
#define ll long long
#include<utility>
#define MP make_pair
#define Pos pair<ll,ll>
#define x first
#define y second
Pos operator-(const Pos &a,const Pos &b)
{return MP(a.x-b.x,a.y-b.y);}
ll operator*(const Pos &a,const Pos &b)
{return a.x*b.y-a.y*b.x;}
ll check(Pos a,Pos b) {return a.x*b.y-a.y*b.x;}
#define sq(x) (x)*(x)
#include<cmath>
ll dis(Pos a,Pos b) {return (sq(a.x-b.x)+sq(a.y-b.y));}
ll Area(Pos a,Pos b,Pos c){
return abs((b-a)*(c-a));
}
const int N=5e4+5;
Pos p[N];
bool cmp(Pos a,Pos b){
ll tmp=check(a-p[1],b-p[1]);
if(tmp>0) return 1;
if(tmp==0&&dis(a,p[1])<dis(b,p[1])) return 1;
return 0;
}
int n,cnt;
#include<algorithm>
Pos stk[N];
void convex(){
for(int i=2;i<=n;i++)
if(p[1].y>p[i].y) swap(p[1],p[i]);
sort(p+2,p+1+n,cmp);
stk[++cnt]=p[1];
for(int i=2;i<=n;i++){
while(cnt>1&&check(stk[cnt]-stk[cnt-1],p[i]-stk[cnt])<=0)
cnt--;
stk[++cnt]=p[i];
}
stk[cnt+1]=p[1];
}
int main(){
freopen("P1452.in","r",stdin);
freopen("P1452.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(NULL),cout.tie(NULL);
cin>>n;
for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y;
convex();
ll ans=0;
int j=3;
if(cnt==2){
cout<<dis(stk[1],stk[2])<<endl;
return 0;
}
for(int i=1;i<=cnt;i++){
ans=max(ans,dis(stk[i],stk[i+1]));
while(Area(stk[i],stk[i+1],stk[j])<
Area(stk[i],stk[i+1],stk[j%cnt+1])) j=j%cnt+1;
ans=max(ans,max(dis(stk[i],stk[j]),dis(stk[i+1],stk[j])));
}
cout<<ans<<endl;
}