#include <algorithm>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define rep(i, n) for(int(i) = 0; (i) < (n); (i)++)
#define FOR(i, m, n) for(int(i) = (m); (i) < (n); (i)++)
#define All(v) (v).begin(), (v).end()
#define pb push_back
#define MP(a, b) make_pair((a), (b))
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const int INF = 1 << 30;
const ll LINF = 1LL << 60;
const int MOD = 1e9 + 7;

int main() {
    int N;
    cin >> N;
    int A, B, C;
    cin >> A >> B >> C;
    vector<string> s(N);
    rep(i, N) cin >> s[i];
    vector<char> res;
    rep(i, N) {
        if(s[i] == "AB") {
            if(A == B) {
                if(i + 1 < N && s[i + 1] == "AB") {
                    A--;
                    B++;
                    res.pb('B');
                } else if(i + 1 < N && s[i + 1] == "BC") {
                    A--;
                    B++;
                    res.pb('B');
                } else if(i + 1 < N && s[i + 1] == "AC") {
                    B--;
                    A++;
                    res.pb('A');
                } else {
                    A--;
                    B++;
                    res.pb('B');
                }
            } else if(A >= B) {
                A--;
                B++;
                res.pb('B');
            } else {
                B--;
                A++;
                res.pb('A');
            }
        }
        if(s[i] == "AC") {
            if(A == C) {
                if(i + 1 < N && s[i + 1] == "AC") {
                    A--;
                    C++;
                    res.pb('C');
                } else if(i + 1 < N && s[i + 1] == "BC") {
                    A--;
                    C++;
                    res.pb('C');
                } else if(i + 1 < N && s[i + 1] == "AB") {
                    C--;
                    A++;
                    res.pb('A');
                } else {
                    C--;
                    A++;
                    res.pb('A');
                }
            } else if(A >= C) {
                A--;
                C++;
                res.pb('C');
            } else {
                C--;
                A++;
                res.pb('A');
            }
        }
        if(s[i] == "BC") {
            if(C == B) {
                if(i + 1 < N && s[i + 1] == "BC") {
                    C--;
                    B++;
                    res.pb('B');
                } else if(i + 1 < N && s[i + 1] == "AB") {
                    C--;
                    B++;
                    res.pb('B');
                } else if(i + 1 < N && s[i + 1] == "AC") {
                    B--;
                    C++;
                    res.pb('C');
                } else {
                    C--;
                    B++;
                    res.pb('B');
                }
            } else if(B >= C) {
                B--;
                C++;
                res.pb('C');
            } else {
                C--;
                B++;
                res.pb('B');
            }
        }
        if(A < 0 || B < 0 || C < 0) {
            cout << "No" << endl;
            return 0;
        }
    }
    cout << "Yes" << endl;
    rep(i, res.size()) { cout << res[i] << endl; }
    return 0;
}

Measured memory_bytes: 6720