#include <iostream>
#include <iomanip>
#include <complex>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
const double EPS = 1e-10;
const double INF = 1e12;
const double PI = acos(-1);
#define EQ(n,m) (abs((n)-(m)) < EPS)
#define X real()
#define Y imag()
typedef complex<double> P;
typedef vector<P> VP;
double dot(P a, P b){
    return (conj(a)*b).X;
}
double cross(P a, P b){
    return (conj(a)*b).Y;
}
P rotate(const P &p, double rad){
    return p *P(cos(rad), sin(rad));
}
double getangle(P a, P b){
    return abs(arg(a/b));
}

void inputXY(P &p){
    double x,y;
    cin >> x >> y;
    p = P(x,y);
}

bool in_sector(P s, P g, double w, double d, double a){
    g -= s;
    double wrad = w/180 *PI;
    P dir = rotate(P(1, 0), wrad);
    double drad = (d/2)/180 *PI;
    double angle = getangle(g, dir);
    return abs(g) < a +EPS && -drad < angle +EPS && angle < drad +EPS;
}

int main(){
    while(1){
        int h,r;
        cin >> h >> r;
        if(h==0 && r==0) break;

        VP house(h);
        for(int i=0; i<h; i++) inputXY(house[i]);

        int u,m,s, du,dm,ds;
        cin >> u >> m >> s >> du >> dm >> ds;
        VP pu(u), pm(m), ps(s);
        for(int i=0; i<u; i++) inputXY(pu[i]);
        for(int i=0; i<m; i++) inputXY(pm[i]);
        for(int i=0; i<s; i++) inputXY(ps[i]);
        vector<int> w(r), a(r);
        for(int i=0; i<r; i++) cin >> w[i] >> a[i];
        
        vector<int> reach(h, 0);
        for(int i=0; i<h; i++){
            for(int j=0; j<r; j++){
                if(!in_sector(P(0,0), house[i], w[j], du, a[j])){
                    continue;
                }
                bool only = true;
                for(int k=0; k<u && only; k++){
                    if(in_sector(pu[k], house[i], w[j], du, a[j])){
                        only = false;
                    }
                }
                for(int k=0; k<m && only; k++){
                    if(in_sector(pm[k], house[i], w[j], dm, a[j])){
                        only = false;
                    }
                }
                for(int k=0; k<s && only; k++){
                    if(in_sector(ps[k], house[i], w[j], ds, a[j])){
                        only = false;
                    }
                }
                if(only){
                    reach[i]++;
                }
            }
        }

        int max = *max_element(reach.begin(), reach.end());
        if(max == 0){
            cout << "NA" << endl;
        }else{
            vector<int> ans;
            for(int i=0; i<h; i++){
                if(reach[i] == max){
                    ans.push_back(i+1);
                }
            }
            for(int i=0; i<(int)ans.size()-1; i++){
                cout << ans[i] << " ";
            }
            cout << ans.back() << endl;
        }
    }
    return 0;
}
