func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 1;   namespace fastinput {   inline int readChar();   template <class T = int>   inline T readInt();   template <class T>   inline void writeInt(T x, char end = 0);   inline void writeChar(int x);   inline void writeWord(const char *s);   static const int buf_size = 16384;   inline int getChar() {     static char buf[buf_size];     static int len = 0, pos = 0;     if (pos == len) pos = 0, len = fread(buf, 1, buf_size, stdin);     if (pos == len) return -1;     return buf[pos++];   }   inline int readChar() {     int c = getChar();     while (c <= 32) c = getChar();     return c;   }   template <class T>   inline T readInt() {     int s = 1, c = readChar();     T x = 0;     if (c ==  - ) s = -1, c = getChar();     while ( 0  <= c && c <=  9 ) x = x * 10 + c -  0 , c = getChar();     return s == 1 ? x : -x;   }   static int write_pos = 0;   static char write_buf[buf_size];   inline void writeChar(char x) {     if (write_pos == buf_size)       fwrite(write_buf, 1, buf_size, stdout), write_pos = 0;     write_buf[write_pos++] = x;   }   template <class T>   inline void writeInt(T x, char end) {     if (x < 0) writeChar( - ), x = -x;     char s[24];     int n = 0;     while (x || !n) s[n++] =  0  + x % 10, x /= 10;     while (n--) writeChar(s[n]);     if (end) writeChar(end);   }   inline void writeWord(const char *s) {     while (*s) writeChar(*s++);   }   struct Flusher {     ~Flusher() {       if (write_pos) fwrite(write_buf, 1, write_pos, stdout), write_pos = 0;     }   } flusher;   }  // namespace fastinput   using namespace fastinput;   const string arr[6] = { S ,  M ,  L ,  XL ,  XXL ,  XXXL };   int decode(string s) {     for (int i = 0; i < 6; ++i)       if (s == arr[i]) return i;   }   int cnt[6];   int answer[N];   pair<int, int> want[N];   int give[N];   map<pair<int, int>, vector<int> > whowant;   void NO() {     puts( NO );     exit(0);   }   int main() {     ::ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     for (int i = 0; i < 6; ++i) cin >> cnt[i];     int n;     cin >> n;     for (int i = 0; i < n; ++i) {       string t;       cin >> t;       size_t x = t.find( , );       if (x != std::string::npos) {         want[i].first = decode(t.substr(0, x));         want[i].second = decode(t.substr(x + 1));       } else         want[i].first = decode(t), want[i].second = -1;       whowant[want[i]].push_back(i);     }     for (int i = 0; i < 6; ++i) {       vector<int> tmp = whowant[{i, -1}];       while (cnt[i] > 0 && tmp.size() > 0) {         give[tmp.back()] = i;         tmp.pop_back();         --cnt[i];       }       if (tmp.size() > 0) NO();       tmp = whowant[{i - 1, i}];       while (cnt[i] > 0 && tmp.size() > 0) {         give[tmp.back()] = i;         tmp.pop_back();         --cnt[i];       }       if (tmp.size() > 0) NO();       tmp = whowant[{i, i + 1}];       while (cnt[i] > 0 && tmp.size() > 0) {         give[tmp.back()] = i;         tmp.pop_back();         --cnt[i];       }       whowant[{i, i + 1}] = tmp;     }     cout <<  YES n ;     for (int i = 0; i < n; ++i) cout << arr[give[i]] <<   n ;     return 0;   }   