#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template<class T,class U> inline bool chmin(T&x,U y){if(x>y){x=y;return true;}return false;}
template<class T,class U> inline bool chmax(T&x,U y){if(x<y){x=y;return true;}return false;}
#define fr(i,n) for(int i=0;i<(n);++i)
#define Fr(i,n) for(int i=1;i<=(n);++i)
#define ifr(i,n) for(int i=(n)-1;i>=0;--i)
#define iFr(i,n) for(int i=(n);i>0;--i)

int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    int n,A,B,C;
    cin>>n>>A>>B>>C;
    string ans;
    ans.reserve(n);
    if(A+B+C==2){
        auto v=vector(n+1,vector(6,false));
        if(!A+!B+!C==1){
            if(!A) v[0][0]=true;
            if(!B) v[0][1]=true;
            if(!C) v[0][2]=true;
        }
        else{
            if(A) v[0][3]=true;
            if(B) v[0][4]=true;
            if(C) v[0][5]=true;
        }
        vector<string> s(n);
        fr(i,n){
            cin>>s[i];
            if(s[i]=="AB"){
                if(v[i][0]) v[i+1][1]=true;
                if(v[i][1]) v[i+1][0]=true;
                if(v[i][2]) v[i+1][3]=v[i+1][4]=true;
                if(v[i][3] or v[i][4]) v[i+1][2]=true;
            }
            if(s[i]=="AC"){
                if(v[i][0]) v[i+1][2]=true;
                if(v[i][2]) v[i+1][0]=true;
                if(v[i][1]) v[i+1][3]=v[i+1][5]=true;
                if(v[i][3] or v[i][5]) v[i+1][1]=true;
            }
            if(s[i]=="BC"){
                if(v[i][1]) v[i+1][2]=true;
                if(v[i][2]) v[i+1][1]=true;
                if(v[i][0]) v[i+1][4]=v[i+1][5]=true;
                if(v[i][4] or v[i][5]) v[i+1][0]=true;
            }
            bool F{};
            fr(j,6) F=F||v[i+1][j];
            if(!F) return puts("No"),0;
        }
        fr(j,6) if(v[n][j]){
            cout<<"Yes"<<'\n';
            int t=j;
            stack<char> ans;
            ifr(i,n){
                if(s[i]=="AB"){
                    if(t==0) ans.push('B'),t=1;
                    else if(t==1) ans.push('A'),t=0;
                    else if(t==2){
                        if(v[i][3]) ans.push('B'),t=3;
                        else ans.push('A'),t=4;
                    }
                    else if(t==3) ans.push('A'),t=2;
                    else if(t==4) ans.push('B'),t=2;
                }
                if(s[i]=="AC"){
                    if(t==0) ans.push('C'),t=2;
                    else if(t==2) ans.push('A'),t=0;
                    else if(t==1){
                        if(v[i][3]) ans.push('C'),t=3;
                        else ans.push('A'),t=5;
                    }
                    else if(t==3) ans.push('A'),t=1;
                    else if(t==5) ans.push('C'),t=1;
                }
                if(s[i]=="BC"){
                    if(t==1) ans.push('C'),t=2;
                    else if(t==2) ans.push('B'),t=1;
                    else if(t==0){
                        if(v[i][4]) ans.push('C'),t=4;
                        else ans.push('B'),t=5;
                    }
                    else if(t==4) ans.push('B'),t=0;
                    else if(t==5) ans.push('C'),t=0;
                }
            }
            while(!ans.empty()) cout<<ans.top()<<'\n',ans.pop();
            return 0;
        }
        assert(false);
    }
    fr(i,n){
        string s;
        cin>>s;
        if(s=="AB"){
            if(A<B){
                ++A;--B;
                ans+='A';
            }
            else{
                ++B;--A;
                ans+='B';
            }
        }
        if(s=="BC"){
            if(B<C){
                ++B;--C;
                ans+='B';
            }
            else{
                ++C;--B;
                ans+='C';
            }
        }
        if(s=="AC"){
            if(C<A){
                ++C;--A;
                ans+='C';
            }
            else{
                ++A;--C;
                ans+='A';
            }
        }
        if(A<0||B<0||C<0) return puts("No"),0;
    }
    cout<<"Yes"<<'\n';
    for(auto&c:ans) cout<<c<<'\n';
}

Measured memory_bytes: 13500