#include<cstdio>
#include<cmath>
const int N=1000000;
int n,m,S,T;
int mx[64],my[64],nx[64],ny[64];
int es[N],enx[N],e0[N],ep,h[N],q[N],ev[N];
double t1,t2,v;
bool bfs(){
for(int i=1;i<=T;i++)h[i]=0;
int ql=0,qr=0;
h[q[qr++]=S]=1;
while(ql!=qr){
int w=q[ql++];
for(int i=e0[w];i;i=enx[i])if(ev[i]){
int u=es[i];
if(!h[u])h[q[qr++]=u]=h[w]+1;
}
}
return h[T];
}
int dfs(int w,int f){
if(w==T)return f;
int c,used=0;
for(int i=e0[w];i;i=enx[i])if(ev[i]){
int u=es[i];
if(h[u]!=h[w]+1)continue;
c=f-used;
if(c>ev[i])c=ev[i];
c=dfs(u,c);
ev[i]-=c;
ev[i^1]+=c;
used+=c;
if(f==used)return f;
}
h[w]=0;
return used;
}
inline void adde(int a,int b){
es[ep]=b;enx[ep]=e0[a];ev[ep]=1;e0[a]=ep++;
es[ep]=a;enx[ep]=e0[b];ev[ep]=0;e0[b]=ep++;
}
bool chk(double t){
ep=2;
S=n*m+m+1;T=S+1;
for(int i=1;i<=T;i++)e0[i]=0;
for(int i=1;i<=n;i++){
for(int k=0;k<m;k++){
adde(S,(i-1)*m+k+1);
}
}
for(int i=1;i<=m;i++)adde(n*m+i,T);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
double x=mx[j]-nx[i],y=my[j]-ny[i];
double tm=sqrt(x*x+y*y)/v;
if(tm>t)continue;
for(int k=0;k<m;k++)if(tm+t1+(t1+t2)*k<=t){
adde((i-1)*m+k+1,n*m+j);
}
}
}
int ans=0;
while(bfs())ans+=dfs(S,0x3f3f3f3f);
return ans==m;
}
int main(){
scanf("%d%d%lf%lf%lf",&n,&m,&t1,&t2,&v);
for(int i=1;i<=m;i++)scanf("%d%d",mx+i,my+i);
for(int i=1;i<=n;i++)scanf("%d%d",nx+i,ny+i);
t1/=60.;
double L=0,R=1e5;
for(int i=0;i<44;i++){
double M=(L+R)*.5;
if(chk(M))R=M;
else L=M;
}
printf("%.6f\n",L);
return 0;
}