#include <bits/stdc++.h>
using namespace std;

using ll=long long;
#define int ll

#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define gnr(i,a,b) for(int i=int(b)-1;i>=a;i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define eb emplace_back
#define a first
#define b second
#define bg begin()
#define ed end()
#define all(x) x.bg,x.ed
#ifdef LOCAL
#define dmp(x) cerr<<__LINE__<<" "<<#x<<" "<<x<<endl
#else
#define dmp(x) void(0)
#endif

template<class t,class u> void chmax(t&a,u b){if(a<b)a=b;}
template<class t,class u> void chmin(t&a,u b){if(a>b)a=b;}

template<class t> using vc=vector<t>;
template<class t> using vvc=vc<vc<t>>;

using pi=pair<int,int>;
using vi=vc<int>;

template<class t,class u>
ostream& operator<<(ostream& os,const pair<t,u>& p){
	return os<<"{"<<p.a<<","<<p.b<<"}";
}

template<class t> ostream& operator<<(ostream& os,const vc<t>& v){
	os<<"{";
	for(auto e:v)os<<e<<",";
	return os<<"}";
}

using ld=long double;
using cm=complex<ld>;
#define x real()
#define y imag()
const ld eps=1e-8;
const ld PI=acos(ld(-1));
int sgn(ld a){return a<-eps?-1:(a>eps?1:0);}
auto cmcmp=[](const cm&a,const cm&b){
	if(sgn(a.x-b.x))return a.x<b.x;
	else return sgn(a.y-b.y)<0;
};
auto cmeq=[](const cm&a,const cm&b){
	return sgn(a.x-b.x)==0&&sgn(a.y-b.y)==0;
};
ld dot(cm a,cm b){return a.x*b.x+a.y*b.y;}
ld crs(cm a,cm b){return a.x*b.y-a.y*b.x;}
ld crs(cm a,cm b,cm c){return crs(b-a,c-a);}
int ccw(cm a,cm b){return sgn(crs(a,b));}
int ccw(cm a,cm b,cm c){return ccw(b-a,c-a);}
//AOJ1183
int qeq(ld a,ld b,ld c,ld&d,ld&e){
	ld f=b*b-4*a*c;
	if(sgn(f)<0)return 0;
	ld g=sqrt(max(f,ld(0)));
	d=(-b+g)/(2*a);
	e=(-b-g)/(2*a);
	return sgn(f)+1;
}
//(-2)[a,-1](0)[b,1](2)
int bet(cm a,cm b,cm c){
	cm d=b-a;
	ld e=dot(d,c-a);
	if(sgn(e)<=0)return sgn(e)-1;
	return sgn(e-norm(d))+1;
}
//AOJ0153
//0-no,1-edge,2-in
int cont(cm a,cm b,cm c,cm d){
	if(ccw(a,b,c)==-1)
		swap(b,c);
	return min({ccw(a,b,d),ccw(b,c,d),ccw(c,a,d)})+1;
}
//AOJ1183
//arg between ab
//assume given lengths are valid
ld arg(ld a,ld b,ld c){
	return acos(min(max((a*a+b*b-c*c)/(2*a*b),ld(-1)),ld(1)));
}
//AOJ2233
//a->b->c と進むときに曲がる角度
//a-b-cが一直線上にあれば0が帰る
ld turn(cm a,cm b,cm c){
	return arg((c-b)/(b-a));
}

bool inc(ld a,ld b,ld c){
	return sgn(a-b)<=0&&sgn(b-c)<=0;
}

signed main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	cout<<fixed<<setprecision(20);
	
	while(1){
		int h,r;cin>>h>>r;
		if(h==0)break;
		vc<cm> pos(h);
		rep(i,h){
			ld s,t;cin>>s>>t;
			pos[i]=cm(s,t);
		}
		int n[3];
		ld d[3];
		rep(i,3)cin>>n[i];
		rep(i,3){cin>>d[i];d[i]*=PI/180/2;}
		vc<cm> z[3];
		rep(i,3)rep(j,n[i]){
			ld s,t;cin>>s>>t;
			z[i].eb(s,t);
		}
		
		vi cnt(h);
		const auto sub=[&](int k,cm a,cm b,ld w,ld len){
			if(sgn(abs(a-b)-len)>0)return 0;
			ld c=arg(b-a);
			rng(i,-1,2)
				if(inc(w-d[k],c+2*PI*i,w+d[k]))
					return 1;
			return 0;
		};
		rep(_,r){
			ld w,a;cin>>w>>a;
			w*=PI/180;
			rep(i,h)if(sub(0,cm(),pos[i],w,a)){
				bool ok=true;
				rep(k,3)rep(j,n[k])
					if(sub(k,z[k][j],pos[i],w,a))
						ok=false;
				cnt[i]+=ok;
			}
		}
		
		int mx=*max_element(all(cnt));
		if(mx){
			vi ans;
			rep(i,h)if(cnt[i]==mx)
				ans.pb(i+1);
			rep(i,ans.size()){
				cout<<ans[i];
				if(i+1<int(ans.size()))cout<<" ";
				else cout<<endl;
			}
		}else
			cout<<"NA"<<endl;
	}
}



Measured memory_bytes: 3300