#include <bits/stdc++.h>
#define nmax 30002
using namespace std;
int ver[nmax],ori[nmax];
int sx,sy,fx,fy;
int tx,ty,cros=0;
int mn(int a, int b)
{
return a>b?b:a;
}
int mx(int a, int b)
{
return a>b?a:b;
}
int cmmdc(int a, int b)
{
while(a!=b)
{
if(a>b) a-=b;
else b-=a;
}
return a;
}
int main()
{
freopen("parc.in","r",stdin);
freopen("parc.out","w",stdout);
int m,n;
int up,down,left,right;
scanf("%i %i",&n,&m);// nu avem nevoie de dimensiuni
scanf("%i %i %i %i",&sx,&sy,&fx,&fy);
up=mn(sy,fy), down=mx(sy,fy);
left=mn(sx,fx), right=mx(sx,fx);
ty=down-up;
tx=right-left;
scanf("%i",&n);
for(int i=0;i<n;i++)
{
int a,b;
scanf("%i %i",&a,&b);
ver[mx(a,b)]=1;
ver[mn(a,b)]=-1;
if(mn(a,b)>=left&&mx(a,b)<=right) {tx-=(mx(a,b)-mn(a,b)); cros+=(mx(a,b)-mn(a,b));}
}
scanf("%i",&m);
for(int i=0;i<m;i++)
{
int a,b;
scanf("%i %i",&a,&b);
ori[mx(a,b)]=1;
ori[mn(a,b)]=-1;
if(mn(a,b)>=up&&mx(a,b)<=down) {ty-=(mx(a,b)-mn(a,b)); cros+=(mx(a,b)-mn(a,b));}
}
printf("%f \n1",sqrt(pow(tx,2)+pow(ty,2))+cros);
return 0;
}