#include <iostream>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;

#define x first
#define y second
typedef pair<double,double> pdd;
typedef pair<int,int> pii;

const double EPS = 1e-9;

int H, R;
vector<pdd> h, w;
int U, M, S;
double du, dm, ds;
vector<pdd> u, m, s;

bool in(pdd house, pdd tree, pdd wind, double d) {
	pdd v;
	double dist;
	v = make_pair(house.x - tree.x, house.y - tree.y);
	dist = sqrt(v.x*v.x + v.y*v.y);
	if(dist > wind.y)
		return false;

	double theta;
	theta = atan2(v.y, v.x);
	double tmp = theta - M_PI*wind.x/180.0 + 4*M_PI;
	while(tmp - 2*M_PI >= -M_PI) tmp -= 2*M_PI;
	
	if(abs(tmp) > d*M_PI/180.0/2.0 + EPS)
		return false;

	return true;
}

void solve() {
	vector<pii> cnt;
	cnt.resize(H);
	for(int i = 0; i < cnt.size(); i++)
		cnt[i] = make_pair(0,-(i+1));

	for(int i = 0; i < h.size(); i++) {
		for(int j = 0; j < w.size(); j++) {
			bool fu, fm, fs;
			fu = fm = fs = false;
			for(int k = 0; k < u.size(); k++)
				fu |= in(h[i], u[k], w[j], du);

			for(int k = 0; k < m.size(); k++)
				fm |= in(h[i], m[k], w[j], dm);

			for(int k = 0; k < s.size(); k++)
				fs |= in(h[i], s[k], w[j], ds);

			if(!fu && !fm && !fs && in(h[i], make_pair(0.0, 0.0), w[j], du))
				cnt[i].x++;
		}
	}
	sort(cnt.rbegin(), cnt.rend());

	if(cnt[0].x == 0) {
		cout << "NA" << endl;
		return;
	}
	cout << -cnt[0].y;
	for(int i = 1; i < cnt.size() && cnt[i-1].x == cnt[i].x; i++)
		cout << " " << -cnt[i].y;
	cout << endl;
}

int main() {
	while(cin >> H >> R, H || R) {
		h.clear(); w.clear();
		u.clear(); m.clear(); s.clear();

		h.resize(H);
		for(int i = 0; i < H; i++)
			cin >> h[i].x >> h[i].y;
		cin >> U >> M >> S >> du >> dm >> ds;
		u.resize(U);
		for(int i = 0; i < U; i++)
			cin >> u[i].x >> u[i].y;

		m.resize(M);
		for(int i = 0; i < M; i++)
			cin >> m[i].x >> m[i].y;
		s.resize(S);
		for(int i = 0; i < S; i++)
			cin >> s[i].x >> s[i].y;
		w.resize(R);
		for(int i = 0; i < R; i++)
			cin >> w[i].x >> w[i].y;

		solve();
	}
}