#include <bits/stdc++.h>
using namespace std;
struct node {
  int a, b;
  int id;
};
vector<node> tp;
int vis[111111];
bool cmp(node x, node y) {
  if (x.a != y.a) return x.a < y.a;
  return x.b < y.b;
}
int check(char s[]) {
  if (strcmp(s, "S") == 0) return 0;
  if (strcmp(s, "M") == 0) return 1;
  if (strcmp(s, "L") == 0) return 2;
  if (strcmp(s, "XL") == 0) return 3;
  if (strcmp(s, "XXL") == 0) return 4;
  if (strcmp(s, "XXXL") == 0) return 5;
}
char str[10][10] = {"S", "M", "L", "XL", "XXL", "XXXL"};
int main() {
  int s[10];
  int n, m, i, j;
  int flag = 0;
  for (i = 0; i < 6; i++) cin >> s[i];
  cin >> n;
  char g[30];
  for (i = 1; i <= n; i++) {
    cin >> g;
    m = strlen(g);
    for (j = 0; j < m; j++) {
      if (g[j] == ',') {
        g[j] = '\0';
        break;
      }
    }
    if (j == m) {
      s[check(g)]--;
      if (s[check(g)] < 0) flag = 1;
      vis[i] = check(g);
    } else {
      node tmp;
      tmp.a = check(g);
      tmp.b = check(g + j + 1);
      tmp.id = i;
      if (tmp.a > tmp.b) {
        swap(tmp.a, tmp.b);
      }
      tp.push_back(tmp);
    }
  }
  sort(tp.begin(), tp.end(), cmp);
  for (i = 0; i < tp.size(); i++) {
    if (s[tp[i].a] > 0) {
      s[tp[i].a]--;
      vis[tp[i].id] = tp[i].a;
    } else {
      s[tp[i].b]--;
      vis[tp[i].id] = tp[i].b;
    }
    if (s[tp[i].a] < 0 || s[tp[i].b] < 0) flag = 1;
  }
  if (flag)
    printf("NO\n");
  else {
    printf("YES\n");
    for (i = 1; i <= n; i++) {
      printf("%s\n", str[vis[i]]);
    }
  }
  return 0;
}
