#include <bits/stdc++.h>
using namespace std;
int n;
double x,xx,y,yy,ans,pi=3.141592,t[10];
bool use[10];
struct point{double x,y;}a[10];
double min(double x,double y){return x<=y?x:y;}
double max(double x,double y){return x>=y?x:y;}
double dist(int x,int y){
double sum=sqrt((a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y));
return sum;
}
double maxx(int now){
double maxn;
maxn=min(min(xx-a[now].x,a[now].x-x),min(yy-a[now].y,a[now].y-y));
for(int i=1;i<=n;i++)if(use[i])maxn=min(dist(now,i)-t[i],maxn);
if(maxn<0)maxn=0;
return maxn;
}
void dfs(int now,double sum){
if(now==n){ans=max(ans,sum); return;}
for(int i=1;i<=n;i++)if(!use[i]){
double minn=maxx(i);
t[i]=minn;
minn=minn*minn*pi;
use[i]=1;
dfs(now+1,sum+minn);
use[i]=0;
t[i]=0;
}
}
int main(){
scanf("%d",&n);
scanf("%lf%lf%lf%lf",&x,&y,&xx,&yy);
if(y>yy){double g=y; y=yy; yy=g;}
if(x>xx){double g=x; x=xx; xx=g;}
for(int i=1;i<=n;i++)scanf("%lf%lf",&a[i].x,&a[i].y);
dfs(0,0);
int g=(xx-x)*(yy-y);
ans=g-ans;
if(ans-0.5>(double)((int)ans))printf("%d\n",(int)ans+1);
else printf("%d\n",(int)ans);
return 0;
}