#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;const int LMT=102;double gra[LMT][LMT],chose[LMT*LMT],x[LMT<<1],y[LMT<<1],have;int xnum,ynum,cnt,link[LMT];bool vis[LMT];bool dfs(int i){ for(int j=0;j<ynum;j++) { if(gra[i][j]<=have&&!vis[ j ]) { vis[ j ]=true; if(link[ j ]==-1||dfs(link[ j ])) { link[ j ]=i; return true; } } } return false;}bool hu(void){ memset(link,-1,sizeof(link)); for(int i=0;i<xnum;i++) { memset(vis,0,sizeof(vis)); if(!dfs(i))return 0; } return 1;}double solve(void){ int l=0,r=cnt-1,m; double res=0; while(l<=r) { int m=(l+r)>>1; have=chose[m]; if(hu()) { res=have; r=m-1; } else l=m+1; } return res;}int main(){ double v; int i; while(~scanf("%d%d",&xnum,&ynum)) { int i; cnt=0; memset(gra,-1,sizeof(gra)); for(i=0;i<xnum;i++) scanf("%lf%lf",&x[i],&y[i]); for(;i<xnum+ynum;i++) scanf("%lf%lf",&x[i],&y[i]); scanf("%lf",&v); for(int i=0;i<xnum;i++) for(int j=0;j<ynum;j++) { gra[i][j]=sqrt((x[i]-x[j+xnum])*(x[i]-x[j+xnum])+(y[i]-y[j+xnum])*(y[i]-y[j+xnum]))/v; chose[cnt++]=gra[i][j]; } sort(chose,chose+cnt); printf("%.2lfn",solve()); } return 0;}