#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define repr(i, n) for (int i = (n) - 1; i >= 0; i--)
#define range(a) a.begin(), a.end()

bitset<100001> dp[5][5][5];
bitset<100001> ep[5][5][5];
bitset<100001> fp[5][5][5];

int main() {
    int N, A, B, C; cin >> N >> A >> B >> C;
    dp[min(4, A)][min(4, B)][min(4, C)][0] = true;
    vector<string> S(N); rep(i, N) cin >> S[i];
    rep(i, N) {
        rep(a, 5) rep(b, 5) rep(c, 5) if (dp[a][b][c][i]) {
            if (S[i] == "AB") {
                if (a > 0) {
                    dp[a - 1][min(4, b + 1)][c][i + 1] = true;
                    ep[a - 1][min(4, b + 1)][c][i + 1] = false;
                    fp[a - 1][min(4, b + 1)][c][i + 1] = b == 4;
                }
                if (b > 0) {
                    dp[min(4, a + 1)][b - 1][c][i + 1] = true;
                    ep[min(4, a + 1)][b - 1][c][i + 1] = true;
                    fp[min(4, a + 1)][b - 1][c][i + 1] = a == 4;
                }
            } else if (S[i] == "AC") {
                if (a > 0) {
                    dp[a - 1][b][min(4, c + 1)][i + 1] = true;
                    ep[a - 1][b][min(4, c + 1)][i + 1] = false;
                    fp[a - 1][b][min(4, c + 1)][i + 1] = c == 4;
                }
                if (c > 0) {
                    dp[min(4, a + 1)][b][c - 1][i + 1] = true;
                    ep[min(4, a + 1)][b][c - 1][i + 1] = true;
                    fp[min(4, a + 1)][b][c - 1][i + 1] = a == 4;
                }
            } else {
                if (b > 0) {
                    dp[a][b - 1][min(4, c + 1)][i + 1] = true;
                    ep[a][b - 1][min(4, c + 1)][i + 1] = false;
                    fp[a][b - 1][min(4, c + 1)][i + 1] = c == 4;
                }
                if (c > 0) {
                    dp[a][min(4, b + 1)][c - 1][i + 1] = true;
                    ep[a][min(4, b + 1)][c - 1][i + 1] = true;
                    fp[a][min(4, b + 1)][c - 1][i + 1] = b == 4;
                }
            }
        }
    }
    rep(a, 5) rep(b, 5) rep(c, 5) {
        if (dp[a][b][c][N]) {
            cout << "Yes" << endl;

            vector<string> ans;
            repr(i, N) {
                if (S[i] == "AB") {
                    if (ep[a][b][c][i + 1] == false) {
                        ans.push_back("B");
                        b += (int)fp[a][b][c][i + 1];
                        a++;
                        b--;
                    } else {
                        ans.push_back("A");
                        a += (int)fp[a][b][c][i + 1];
                        a--;
                        b++;
                    }
                } else if (S[i] == "AC") {
                    if (ep[a][b][c][i + 1] == false) {
                        ans.push_back("C");
                        c += (int)fp[a][b][c][i + 1];
                        a++;
                        c--;
                    } else {
                        ans.push_back("A");
                        a += (int)fp[a][b][c][i + 1];
                        a--;
                        c++;
                    }
                } else {
                    if (ep[a][b][c][i + 1] == false) {
                        ans.push_back("C");
                        c += (int)fp[a][b][c][i + 1];
                        b++;
                        c--;
                    } else {
                        ans.push_back("B");
                        b += (int)fp[a][b][c][i + 1];
                        b--;
                        c++;
                    }
                }
            }
            repr(i, N) cout << ans[i] << '\n';
            return 0;
        }
    }
    cout << "No" << endl;
}

Measured memory_bytes: 14268