#define ONLINE_JUDGE
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef pair<ll,ll> pl;
typedef vector<pl> vp;
const ll INF=1001001001;
const ll LINF=1001001001001001001;
const ll D4[]={0,1,0,-1,0};
const ll D8[]={0,1,1,0,-1,-1,1,-1,0};
#define _overload3(_1,_2,_3,name,...) name
#define _rep2(i,n) for(ll i=0;i<(n);++i)
#define _rep3(i,a,b) for(ll i=(a);i<(b);++i)
#define rep(...) _overload3(__VA_ARGS__,_rep3,_rep2)(__VA_ARGS__)
#define _repe2(i,n) for(ll i=0;i<=(n);++i)
#define _repe3(i,a,b) for(ll i=(a);i<=(b);++i)
#define repe(...) _overload3(__VA_ARGS__,_repe3,_repe2)(__VA_ARGS__)
#define _rrep2(i,n) for(ll i=(n)-1;i>=0;i--)
#define _rrep3(i,a,b) for(ll i=(b)-1;i>=(a);i--)
#define rrep(...) _overload3(__VA_ARGS__,_rrep3,_rrep2)(__VA_ARGS__)
#define all(x) (x).begin(),(x).end()
template<class T>
bool chmax(T &a,const T &b){if(a<b){a=b;return 1;}return 0;}
template<class T>
bool chmin(T &a,const T &b){if(b<a){a=b;return 1;}return 0;}
template<class T>
using pq=priority_queue<T,vector<T>,greater<T>>;
const string YES = "Yes";
const string NO = "No";

ll N;
ll A;
ll B;
ll C;
vector<string> s;

void solve();

int main(){
    cin.tie(0);
    ios::sync_with_stdio(0);
    cin >> N;
    cin >> A;
    cin >> B;
    cin >> C;
    s = vector<string>(N);
    for(int i = 0; i < N; ++i){
        cin >> s[i];
    }
    solve();
}

// 1 <= N <= 10^5
// 0 <= A,B,C <= 10^9
// N, A, B, C は整数である。
// s_i は AB, AC, BC のいずれか

// ll N, ll A, ll B, ll C, vector<string> s
// 条件を満たしつつ N 個すべての選択を終えることが可能である場合は Yes を、そうでない場合は No を出力せよ。
// 加えて、前者の場合は続く N 行に選択方法を示せ。i+1 行目には i 回目の選択で 1 を足す変数の名前 (A, B, C のいずれか) を出力せよ。
void solve(){
    vl a={A,B,C};
    sort(all(a));
    if(a[1]>=1&&a[2]>=2||A>0&&B>0&&C>0){
        cout<<YES<<endl;
        rep(i,N){
            if(s[i]=="AB"){
                if(A<B){
                    cout<<"A"<<endl;
                    ++A;
                    --B;
                }else{
                    cout<<"B"<<endl;
                    ++B;
                    --A;
                }
            }else if(s[i]=="AC"){
                if(A<C){
                    cout<<"A"<<endl;
                    ++A;
                    --C;
                }else{
                    cout<<"C"<<endl;
                    ++C;
                    --A;
                }
            }else{
                if(C<B){
                    cout<<"C"<<endl;
                    ++C;
                    --B;
                }else{
                    cout<<"B"<<endl;
                    ++B;
                    --C;
                }
            }
            //cerr<<A<<' '<<B<<' '<<C<<endl;
        }
        return;
    }

    if(s[0]=="AB"&&A==0&&B==0||s[0]=="AC"&&A==0&&C==0||s[0]=="BC"&&C==0&&B==0){
        cout<<NO<<endl;
        return;
    }

    if(a[0]==0&&a[1]==0&&a[2]==2){

        vector<string> ans;
        vl val(N,-1);
        // 1,1だったら渡す
        rrep(i,N-1){
            if(s[i]==s[i+1])continue;
            if(s[i]=="AB"&&s[i+1]=="AC")val[i]=0;
            if(s[i]=="AB"&&s[i+1]=="BC")val[i]=1;
            if(s[i]=="AC"&&s[i+1]=="AB")val[i]=0;
            if(s[i]=="AC"&&s[i+1]=="BC")val[i]=2;
            if(s[i]=="BC"&&s[i+1]=="AB")val[i]=1;
            if(s[i]=="BC"&&s[i+1]=="AC")val[i]=2;
        }

        if(s[0]=="AB"){
            if(A<B){
                ans.push_back("A");
                ++A;
                --B;
            }else{
                ans.push_back("B");
                ++B;
                --A;
            }
        }else if(s[0]=="AC"){
            if(A<C){
                ans.push_back("A");
                ++A;
                --C;
            }else{
                ans.push_back("C");
                ++C;
                --A;
            }
        }else{
            if(C<B){
                ans.push_back("C");
                ++C;
                --B;
            }else{
                ans.push_back("B");
                ++B;
                --C;
            }
        }

        rep(i,1,N){
            if(s[i]=="AB"){
                if(A==1&&B==1&&val[i]!=-1){
                    if(val[i]==0){
                        ans.push_back("A");
                        ++A;
                        --B;
                    }else{
                        ans.push_back("B");
                        ++B;
                        --A;
                    }
                }else if(A<B){
                    ans.push_back("A");
                    ++A;
                    --B;
                }else{
                    ans.push_back("B");
                    ++B;
                    --A;
                }
            }else if(s[i]=="AC"){
                if(A==1&&C==1&&val[i]!=-1){
                    if(val[i]==0){
                        ans.push_back("A");
                        ++A;
                        --C;
                    }else{
                        ans.push_back("C");
                        ++C;
                        --A;
                    }
                }else if(A<C){
                    ans.push_back("A");
                    ++A;
                    --C;
                }else{
                    ans.push_back("C");
                    ++C;
                    --A;
                }
            }else{
                if(C==1&&B==1&&val[i]!=-1){
                    if(val[i]==2){
                        ans.push_back("C");
                        ++C;
                        --B;
                    }else{
                        ans.push_back("B");
                        ++B;
                        --C;
                    }
                }else if(C<B){
                    ans.push_back("C");
                    ++C;
                    --B;
                }else{
                    ans.push_back("B");
                    ++B;
                    --C;
                }
            }
        }

        cout<<YES<<endl;
        rep(i,N){
            cout<<ans[i]<<endl;
        }

        return;
    }

    if(a[2]>=2){
        cout<<YES<<endl;
        rep(i,N){
            if(s[i]=="AB"){
                if(A<B){
                    cout<<"A"<<endl;
                    ++A;
                    --B;
                }else{
                    cout<<"B"<<endl;
                    ++B;
                    --A;
                }
            }else if(s[i]=="AC"){
                if(A<C){
                    cout<<"A"<<endl;
                    ++A;
                    --C;
                }else{
                    cout<<"C"<<endl;
                    ++C;
                    --A;
                }
            }else{
                if(C<B){
                    cout<<"C"<<endl;
                    ++C;
                    --B;
                }else{
                    cout<<"B"<<endl;
                    ++B;
                    --C;
                }
            }
        }
        return;
    }

    if(a[1]==0&&a[2]==1){
        vector<string> ans;
        rep(i,N){
            if(s[i]=="AB"){
                if(A==0&&B==0){
                    cout<<NO<<endl;
                    return;
                }
                if(A<B){
                    ans.push_back("A");
                    ++A;
                    --B;
                }else{
                    ans.push_back("B");
                    ++B;
                    --A;
                }
            }else if(s[i]=="AC"){
                if(A==0&&C==0){
                    cout<<NO<<endl;
                    return;
                }
                if(A<C){
                    ans.push_back("A");
                    ++A;
                    --C;
                }else{
                    ans.push_back("C");
                    ++C;
                    --A;
                }
            }else{
                if(B==0&&C==0){
                    cout<<NO<<endl;
                    return;
                }
                if(B<C){
                    ans.push_back("B");
                    ++B;
                    --C;
                }else{
                    ans.push_back("C");
                    ++C;
                    --B;
                }
            }
        }
        cout<<YES<<endl;
        rep(i,N){
            cout<<ans[i]<<endl;
        }
        return;
    }

    vector<string> ans;
    vl val(N,-1);
    // 1,1だったら渡す
    rrep(i,N-1){
        if(s[i]==s[i+1])continue;
        if(s[i]=="AB"&&s[i+1]=="AC")val[i]=0;
        if(s[i]=="AB"&&s[i+1]=="BC")val[i]=1;
        if(s[i]=="AC"&&s[i+1]=="AB")val[i]=0;
        if(s[i]=="AC"&&s[i+1]=="BC")val[i]=2;
        if(s[i]=="BC"&&s[i+1]=="AB")val[i]=1;
        if(s[i]=="BC"&&s[i+1]=="AC")val[i]=2;
    }

    rep(i,N){
        if(s[i]=="AB"){
            if(A==1&&B==1&&val[i]!=-1){
                if(val[i]==0){
                    ans.push_back("A");
                    ++A;
                    --B;
                }else{
                    ans.push_back("B");
                    ++B;
                    --A;
                }
            }else if(A<B){
                ans.push_back("A");
                ++A;
                --B;
            }else{
                ans.push_back("B");
                ++B;
                --A;
            }
        }else if(s[i]=="AC"){
            if(A==1&&C==1&&val[i]!=-1){
                if(val[i]==0){
                    ans.push_back("A");
                    ++A;
                    --C;
                }else{
                    ans.push_back("C");
                    ++C;
                    --A;
                }
            }else if(A<C){
                ans.push_back("A");
                ++A;
                --C;
            }else{
                ans.push_back("C");
                ++C;
                --A;
            }
        }else{
            if(C==1&&B==1&&val[i]!=-1){
                if(val[i]==2){
                    ans.push_back("C");
                    ++C;
                    --B;
                }else{
                    ans.push_back("B");
                    ++B;
                    --C;
                }
            }else if(C<B){
                ans.push_back("C");
                ++C;
                --B;
            }else{
                ans.push_back("B");
                ++B;
                --C;
            }
        }
    }

    cout<<YES<<endl;
    rep(i,N){
        cout<<ans[i]<<endl;
    }
}


Measured memory_bytes: 11352