#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10;
const long long int INFLL = (long long int)1e18 + 10;
const long double EPS = 1e-8;
const long double EPSLD = 1e-18;
const long long int MOD = 1e9 + 7;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
const int MAX_N = 100010;
int test_case;
int m, k;
int a[MAX_N];
int amb[MAX_N];
int last[MAX_N], cnt[MAX_N];
int t[MAX_N], r[MAX_N];
int main() {
  scanf("%d", &test_case);
  for (int test_cnt = (0); test_cnt < (int)(test_case); test_cnt++) {
    scanf("%d %d", &m, &k);
    for (int i = (0); i < (int)(k); i++) scanf("%d", &a[i]);
    for (int i = (0); i < (int)(k); i++) cnt[i] = 0, last[i] = -1;
    for (int i = (0); i < (int)(m); i++) amb[i] = 0;
    for (int i = (0); i < (int)(m - 1); i++) {
      scanf("%d %d", &t[i], &r[i]);
      t[i]--;
      amb[i + 1] = amb[i];
      if (t[i] == -1) {
        amb[i + 1]++;
      } else {
        last[t[i]] = i;
        cnt[t[i]]++;
      }
    }
    int used_amb = INF;
    for (int i = (0); i < (int)(m - 1); i++)
      if (r[i] == 1) {
        for (int j = (0); j < (int)(k); j++)
          if (last[j] < i && amb[i] + cnt[j] >= a[j]) {
            chmin(used_amb, a[j] - cnt[j]);
            a[j] = -INF;
          }
        break;
      }
    if (used_amb == INF) used_amb = 0;
    int ambs = amb[m - 1] - used_amb;
    for (int i = (0); i < (int)(k); i++) {
      if (ambs + cnt[i] >= a[i])
        printf("Y");
      else
        printf("N");
    }
    printf("\n");
  }
  return 0;
}
