//My AC Code:
#include <cstdio>
#include <cmath>
using namespace std;
const double PI = 3.1415926535;
int n;
double xa,ya,xb,yb,x[7],y[7],circle[7];
int vis[7];
double alls;//orr为一个油滴在不触碰其他圆和给出的矩形边界的情况下 构造出来的最大圆的半径,alls为所有圆的最大占地面积
double max(double a,double b){return a>b?a:b;}
double min(double a,double b){return a>b?b:a;}
/*
不能自己写int的max min 因为不是double
*/
double maxrad(int xx){
    double zdx=min(abs(x[xx]-xa),abs(x[xx]-xb));
    double zdy=min(abs(y[xx]-ya),abs(y[xx]-yb));
    double orr=min(zdx,zdy);
    /*
    先求出当前 油滴 在不触碰到 给出的矩形 的边界 最大的半径是多少
    先不考虑矩形中已经有其他油滴形成的圆
    */
    for(int i=1;i<=n;i++){//查看在第xx滴油滴之前,有哪个油滴已经滴在了矩形中,这样才能知道当前这油滴最大能形成多大的圆
        if(i!=xx&&vis[i]){
            double twod=sqrt((x[xx]-x[i])*(x[xx]-x[i])+(y[xx]-y[i])*(y[xx]-y[i]));
            orr=min(orr,max(twod-circle[i],0.0));
            /*
            如果两个圆 是相离的 则,twod-circle[i]一定大于 当前圆的半径
            如果两个圆相交,则选择 twod-circle[i]
            如果两圆内切或者一个包含另一个,则为0.0,即当前油滴没用
            因为当前排列顺序已经决定了 哪个油滴先扩展
            题目要求是圆和圆之间最多只能相切
            */
        }
       
    }
    
     return orr;
}
void dfs(int sa,double sm){
    if(sa>n){//已经选完了 
        alls=max(sm,alls);//所有点 按照一定顺序排列放油滴 构成的圆的最大的面积
        return;
    }
    //也就是最多是 1-6的全排列
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            circle[i]=maxrad(i);//当前第i个油滴 能构成的最大圆 (不与其他圆相交)的半径
            vis[i]=1;//先选当前 第 i个油滴 开始滴
            dfs(sa+1,sm+PI*circle[i]*circle[i]);
            vis[i]=0;//先不选当前第i个油滴
        }
    }
}
int main(){
    scanf("%d",&n);
    scanf("%lf%lf%lf%lf",&xa,&ya,&xb,&yb);
    for(int i=1;i<=n;i++)scanf("%lf%lf",&x[i],&y[i]);
    double sums=abs(xa-xb)*abs(ya-yb);//给出的长方形的面积
    dfs(1,0);//开始搜索
    printf("%0.0f",sums-alls);
    return 0;
}