#include <iostream>
#include <complex>
#include <cmath>
#include <vector>

using namespace std;

typedef complex<double> P;

const double DBG = 1e-8;

int h, r, u, m, s;
double du, dm, ds;
vector<P> ume, momo, sakura, ie;
int cnt[100];

void print(){
  cout << "du = " << du << " dm = " << dm << " ds = " << ds << endl;
  const int SIZE = 15;
  char table[SIZE*2][SIZE*2];
  fill(table[0], table[SIZE*2], '.');
  table[SIZE][SIZE] = 'w';
  for(int i=0;i<ie.size();i++) table[(int)ie[i].imag()+SIZE][(int)ie[i].real()+SIZE] = (i+1<10 ? i+1+'0' : i+1-10+'A');
  for(int i=0;i<ume.size();i++) table[(int)ume[i].imag()+SIZE][(int)ume[i].real()+SIZE] = 'u';
  for(int i=0;i<momo.size();i++) table[(int)momo[i].imag()+SIZE][(int)momo[i].real()+SIZE] = 'm';
  for(int i=0;i<sakura.size();i++) table[(int)sakura[i].imag()+SIZE][(int)sakura[i].real()+SIZE] = 's';
  for(int i=SIZE*2-1;i>=0;i--){
    for(int j=0;j<SIZE*2;j++){
      cout << table[i][j];
    }
    cout << " " << i - SIZE << endl;
  }
  cout << endl; 
}

void init(){
  ume.clear();
  momo.clear();
  sakura.clear();
  ie.clear();
  fill(cnt, cnt+100, 0);
}

bool check2(P kaze, P e, P ki, double dir){
  double dist = abs(e - ki);
  if(dist > kaze.imag()) return false;
  double tmp = arg(e - ki) * 180 / M_PI;
  if(tmp < 0.0) tmp += 360;
  double a = kaze.real() + dir / 2.0;
  while(a > 360.0) a -= 360.0;
  while(a < 0.0) a += 360.0;
  double b = kaze.real() - dir / 2.0;
  while(b > 360.0) b -= 360.0;
  while(b < 0.0) b += 360.0;
  if(b > a) return b <= tmp && tmp <= 360 || 0 <= tmp && tmp <= a;
  else return b <= tmp && tmp <= a;
}

bool check(P kaze, P e){
  if(!check2(kaze, e, P(0, 0), du)) return false;
  //cout << "watashi " << kaze << " " << e << endl;
  for(int i=0;i<u;i++) if(check2(kaze, e, ume[i], du)) return false;
  //cout << "ume " << kaze << " " << e << " " << du << endl;
  for(int i=0;i<m;i++) if(check2(kaze, e, momo[i], dm)) return false;
  //cout << "momo " << kaze << " " << e << " " << dm << endl;
  for(int i=0;i<s;i++) if(check2(kaze, e, sakura[i], ds)) return false;
  //cout << "sakura " << kaze << " " << e << " " << ds << endl;
  return true;
}

main(){
  //check2(P(0, 12), P(4, 3), P(-5, 9), 90);
  //return 0;

  while(cin >> h >> r && (h|r)){
    //cout << h << ' ' << r << endl;
    init();
    P in;
    for(int i=0;i<h;i++){
      cin >> in.real() >> in.imag();
      ie.push_back(in);
    }
    cin >> u >> m >> s >> du >> dm >> ds;
    for(int i=0;i<u;i++){
      cin >> in.real() >> in.imag();
      ume.push_back(in);
    }
    for(int i=0;i<m;i++){
      cin >> in.real() >> in.imag();
      momo.push_back(in);
    }
    for(int i=0;i<s;i++){
      cin >> in.real() >> in.imag();
      sakura.push_back(in);
    }
    for(int i=0;i<r;i++){
      cin >> in.real() >> in.imag();
      for(int j=0;j<h;j++){
        if(check(in, ie[j])) cnt[j]++;
      }
    }
    int ans = 0;
    for(int i=0;i<h;i++) ans = max(ans, cnt[i]);
    if(!ans) cout << "NA" << endl;
    else{
      //cout << ans << endl;
      bool f = true;
      for(int i=0;i<h;i++){
        if(ans == cnt[i]){
          if(!f) cout << " ";
          f = false;
          cout << i+1;
        }
      }
      cout << endl;
    }
  }
  //print();
}

Measured memory_bytes: 1308