#include <iostream>
#include <cstdio>
#include <vector>
#include <iomanip>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <map>
#include <set>
#include <cmath>
using namespace std;

int main() {
    int N;
    vector <int> num(3);
    cin >> N >> num[0] >> num[1] >> num[2];

    vector <int> cntType(N);

    for (int i = 0; i < N; ++i) {
        string s;
        cin >> s;

        if (s == "AB") {
            cntType[i] = 0;
        } else if(s == "AC") {
            cntType[i] = 1;
        } else {
            cntType[i] = 2;
        }
    }

    vector <char> cho(N);
    bool failed = false;

    for (int i = 0; i < N; ++i) {
        if (cntType[i] == 0) { // AB
            if (num[0] > num[1]) {
                --num[0];
                ++num[1];
                cho[i] = 'B';
            } else if (num[1] > num[0]) {
                ++num[0];
                --num[1];
                cho[i] = 'A';
            } else {
                if (i+1 < N && num[2] == 0) { // peeking
                    if (cntType[i+1] == 1) {
                        ++num[0];
                        --num[1];
                        cho[i] = 'A';
                    } else {
                        --num[0];
                        ++num[1];
                        cho[i] = 'B';
                    }
                } else {
                    ++num[0];
                    --num[1];
                    cho[i] = 'A';
                }
            }
        } else if(cntType[i] == 1) { // AC
            if (num[0] > num[2]) {
                --num[0];
                ++num[2];
                cho[i] = 'C';
            } else if (num[2] > num[0]) {
                ++num[0];
                --num[2];
                cho[i] = 'A';
            } else {
                if (i+1 < N && num[1] == 0) { // peeking
                    if (cntType[i+1] == 0) {
                        ++num[0];
                        --num[2];
                        cho[i] = 'A';
                    } else {
                        --num[0];
                        ++num[2];
                        cho[i] = 'C';
                    }
                } else {
                    ++num[0];
                    --num[2];
                    cho[i] = 'A';
                }
            }
        } else { // BC
            if (num[1] > num[2]) {
                --num[1];
                ++num[2];
                cho[i] = 'C';
            } else if (num[2] > num[1]) {
                ++num[1];
                --num[2];
                cho[i] = 'B';
            } else {
                if (i+1 < N && num[0] == 0) { // peeking
                    if (cntType[i+1] == 0) {
                        ++num[1];
                        --num[2];
                        cho[i] = 'B';
                    } else {
                        --num[1];
                        ++num[2];
                        cho[i] = 'C';
                    }
                } else {
                    ++num[1];
                    --num[2];
                    cho[i] = 'B';
                }
            }
        }

        for (int j = 0; j < 3; ++j) {
            if (num[j] < 0) {
                failed = true;
                break;
            }
        }
    }

    if (failed) {
        cout << "No" << endl;
    } else {
        cout << "Yes" << endl;
        for (int i = 0; i < N; ++i) {
            cout << cho[i] << endl;
        }

        // for (int i = 0; i < 3; ++i) {
        //     cout << num[i] << " ";
        // }
        // cout << endl;
    }



    return 0;
}

Measured memory_bytes: 3744