/*
TASK:dist
LANG:C
*/
/*
  Name: Zadacha B3: Razstoqnie
  Copyright: aRaGaR
  Author: Radoslav Rachev
  Date: 21.04.07 11:17
  Description: NOI III
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Max 1000000

typedef struct {int x,y,det;}point;
point a[5002];
point ans[5002];

int CP (point,point,point);
void swap (int,int);
int cmp (const void *,const void *);
void graham ();

int n,cnt;

int main ()
{
    int i,j,ind=1,RealAns;
    double tmp,max=Max;
    
    scanf ("%d %d %d",&n,&a[0].x,&a[0].y);
    for (i=1;i<=n;i++)
        {
            scanf ("%d %d",&a[i].x,&a[i].y);
            if (a[i].x<a[ind].x)
                ind=i;
            else if (a[i].x==a[ind].x && a[i].y<a[ind].y)
                ind=i;
        }
    
    swap (1,ind);
    a[n+1].x=a[n+1].y=0;
    for (i=2;i<=n;i++)
        a[i].det=CP (a[i],a[n+1],a[1]);
    
    qsort (a+2,n-1,sizeof (a[0]),cmp);
    
    graham ();
    
    for (i=1;i<cnt;i++)
        {
            tmp=(a[0].x - ans[i].x)*(a[0].x - ans[i].x)+(a[0].y - ans[i].y)*(a[0].y - ans[i].y);
            tmp=sqrt (tmp);
            if (tmp<max)
                max=tmp;
        }
    RealAns=(int)max;
    printf ("%d\n",RealAns);
    
    return 0;
}

//=====================
int CP (point x0,point x1,point x2)
{
    int dx1=x1.x-x0.x;
    int dx2=x2.x-x1.x;
    int dy1=x1.y-x0.y;
    int dy2=x2.y-x1.y;
    return dx1*dy2-dx2*dy1;
}
//=====================
void swap (int i,int ind)
{
    point tmp;
    tmp=a[i];
    a[i]=a[ind];
    a[ind]=tmp;
    return;
}
//=====================
int cmp (const void *x,const void *y)
{
    if (((const point *)x)->det > ((const point *) y)->det)
        return 1;
    return 0;
}
//======================
void graham ()
{
    int zn;
    int i,j;
    cnt=4;
    if(CP (a[1],a[2],a[3])<0) zn=-1;
    else zn=1;
    ans[1]=a[1];
    ans[2]=a[2];
    ans[3]=a[3];
    for (i=4;i<=n;i++)
        {
            if (CP (ans[cnt-2],ans[cnt-1],a[i])*zn<0)
                {
                    ans[cnt-1]=a[i];
                    while (CP (ans[cnt-3],ans[cnt-2],a[cnt-1])*zn<0)
                        {
                            cnt--;
                            ans[cnt-1]=ans[cnt];
                        }
                }
            else
                {
                    ans[cnt]=a[i];
                    cnt++;
                }
        }
}
//======================
