#include<bits/stdc++.h>
using namespace std;
int n,m,ju[501],fa[1001],maxn=-1,minn=9999,x[1001],y[1001],cnt;
struct edge{
int from,to;
double val;
}e[1000001];
double dis(int p1,int p2){
return sqrt(pow(x[p1]-x[p2],2)+pow(y[p1]-y[p2],2));
}
void addedge(int u,int v){
e[++cnt].from=u;
e[cnt].to=v;
e[cnt].val=dis(u,v);
}
bool cmp(edge a,edge b){
return a.val<b.val;
}
int fuck(int k){
if(fa[k]==k)return k;
else return fa[k]=fuck(fa[k]);
}
int kruskal(int lim){
for(int i=1;i<=n;i++)fa[i]=i;
int ecnt=0;
for(int i=1;i<=cnt;i++){
if(e[i].val>lim&&ecnt<n-1)return 0;
int p=fuck(e[i].from),q=fuck(e[i].to);
if(p==q)continue;
fa[p]=q;ecnt++;
}
return 1;
}
int main(){
ios::sync_with_stdio(false);
cin>>m;
for(int i=1;i<=m;i++){
cin>>ju[i];
minn=min(minn,ju[i]);
maxn=max(maxn,ju[i]);
}
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
addedge(i,j);
}
}
stable_sort(e+1,e+cnt+1,cmp);
stable_sort(ju+1,ju+m+1);
int l=1,r=m,mid;
while(l!=r){
mid=(l+r)/2;
if(kruskal(ju[mid])){
l=mid+1;
}
else{
r=mid;
}
}
cout<<l-1;
}