#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
const double eps=1e-10;
#define NV 50005
int n;
double add(double a , double b){
if(fabs(a+b) < eps * ( fabs(a)+fabs(b) ) ) return 0;
return a + b;
}
struct P{
double x,y;
P (){ }
P (double a, double b):x(a),y(b){}
P operator + (P p){
return P( add(x , p.x) , add(y , p.y));
}
P operator - (P p){
return P( add(x, -p.x) , add( y ,-p.y));
}
P operator * (double d){
return P( x * d , y * d);
}
double dot (P p){
return add( x * p.x , y * p.y);
}
double det (P p){
return add( x * p.y , -y * p.x);
}
};
bool on_seg(P p1,P p2 ,P q){
return (p1 - q).det(p2 - q)==0 && (p1 -q).dot(p2 - q) <= 0;
}
P intersection(P p1, P p2 ,P q1 , P q2){
return p1 + (p2 - p1)*((q2 - q1).det(q1 - p1) / (q2 - q1).det(p2 - p1));
}
bool parallel(P p1 , P p2 , P q1 , P q2){
return (p1-p2).det(q1-q2)==0? 1 : 0 ;
}
P ps[NV];
bool cmp_x(const P &p , const P &q){
if(p.x!=q.x)return p.x < q.x;
return p.y < q.y;
}
double dist(P p, P q){
return (p-q).dot(p-q);
}
vector <P> convex_hull(P * ps,int n){
sort(ps ,ps +n , cmp_x);
int k = 0 ;
vector<P> qs (2*n);
for(int i= 0 ; i< n ; i++ ){
while( k > 1 && (qs[k-1] - qs[k-2]).det(ps[i]-qs[k-1]) <= 0)k--;
qs[k++] = ps[i];
}
for(int i = n - 2 , t = k ; i >= 0 ; i--){
while( k > t && (qs[k-1] - qs[k-2]).det(ps[i]-qs[k-1]) <= 0)k--;
qs[k++] = ps[i];
}
qs.resize(k-1);
return qs;
}
void solve_1(){
vector <P> qs = convex_hull(ps,n);
double res=0;
for(int i = 0 ; i <qs.size() ; i++){
for(int j = 0 ; j< i ; j ++){
res=max(res,dist(qs[i] , qs[j]));
}
}
printf("%.0f\n",res);
}
void Rotatingcalipers(){
vector <P> qs = convex_hull(ps,n);
int num = qs.size();
if( num == 2){
printf("%.0f\n",dist(qs[0] ,qs[1]));
return ;
}
int i = 0 , j = 0;
for(int k = 0 ; k < num ; k++){
if(!cmp_x(qs[i] , qs[k])) i = k ;
if( cmp_x(qs[j] , qs[k])) j = k ;
}
double res = 0;
int si = i , sj = j ;
while(i != sj || j != si){
res = max(res , dist(qs[i] , qs[j]));
if((qs[(i+1) % num] - qs[i]).det(qs[(j+1)%num] - qs[j]) < 0){
i = ( i + 1 ) % num ;
}else{
j = ( j + 1) % num;
}
}
printf("%.0lf\n",res);
}
void init(){
scanf("%d",&n);
for(int i=0 ; i < n ; i++ )scanf("%lf%lf",&ps[i].x,&ps[i].y);
}
int main()
{
init();
Rotatingcalipers();
return 0;
}