//g++ t.cpp -o t -O2 -Wall
//g++ t.cpp -o t && t < p.txt
//d>p.txt&&t<p.txt&&t2<p.txt

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
#include <cassert>
#include <random>

using namespace std; using ll=long long; const int INF=1e9;
typedef pair<int,int> P;

int main() {
  int n,a,b,c; cin>>n>>a>>b>>c;
  //int o=a,p=b,q=c;
  string s[n]; mt19937 mt(34);
  for(int i=0;i<n;i++) {
    cin>>s[i];
    //int rd = mt()%3;
    //if (rd==0) s[i]="AB";
    //else if (rd==1) s[i]="AC";
    //else s[i]="BC";
  }
  char ans[n]; bool ok=true;
  for(int i=0;i<n;i++) {
    if (s[i] == "AB") {
      if (a == 0 && b == 0) ok=false;
      else if (a == 0) a++, b--, ans[i]='A';
      else if (b == 0) b++, a--, ans[i]='B';
      else {
        if (i == n-1) {
          ans[i]='A';
        } else {
          if (a!=1 && b!=1) {
            if (a>1) a--, b++, ans[i]='B';
            else a++, b--, ans[i]='A';
          }
          else if (s[i+1] == "AB") a++, b--, ans[i]='A';
          else if (s[i+1] == "AC") a++, b--, ans[i]='A';
          else b++, a--, ans[i]='B';
        }
      }
    } else if (s[i] == "AC") {
      if (a == 0 && c == 0) ok =false;
      else if (a==0) a++, c--, ans[i]='A';
      else if (c==0) c++, a--, ans[i]='C';
      else {
        if (i == n-1) {
          ans[i]='A';
        } else {
          if (a!=1 && c!=1) {
            if (a>1) a--, c++, ans[i]='C';
            else a++, c--, ans[i]='A';
          }
          else if (s[i+1] == "AB") a++, c--, ans[i]='A';
          else if (s[i+1] == "AC") a++, c--, ans[i]='A';
          else c++, a--, ans[i]='C';
        }
      }
    } else if (s[i] == "BC") {
      if (b==0&&c==0) ok=false;
      else if (b==0) b++,c--, ans[i]='B';
      else if (c==0) c++,b--, ans[i]='C';
      else {
        if (i == n-1) {
          ans[i]='B';
        } else {
          if (b!=1 && c!=1) {
            if (b>1) b--, c++, ans[i]='C';
            else b++, c--, ans[i]='B';
          }
          else if (s[i+1] == "AB") b++, c--, ans[i]='B';
          else if (s[i+1] == "AC") c++, b--, ans[i]='C';
          else b++, c--, ans[i]='B';
        }
      }
    }
    //cout << i << ": " << a << " " << b << " " << c << " " << s[i] << " " << ans[i] << endl;
    //if (!ok) {cout<<"!!"<<endl; break;}
  }
  /*
  if (ok) cout<<"Done"<<endl;
  else return 0;

  bool oo = true;
  for(int i=0;i<n;i++) {
    if (s[i] == "AB") {
      if (ans[i] == 'A') o++, p--;
      else if (ans[i] == 'B') o--, p++;
      else oo=false;
    } else if (s[i] == "AC") {
      if (ans[i] == 'A') o++, q--;
      else if (ans[i] == 'C') o--, q++;
      else oo=false;
    } else if (s[i] == "BC") {
      if (ans[i] == 'B') p++, q--;
      else if (ans[i] == 'C') p--, q++;
      else oo=false;
    }
    if (o < 0 || p < 0 || q < 0) {
      //cout << i << " " << o << " " << p << " " << q << endl;
      oo=false;
    }
    cout << i << " " << o << " " << p << " " << q << endl;
  }
  if (!oo) cout<<"!!!!"<<endl;
  else cout<<"OK"<<endl;
  */
  
  if (ok) {
    cout<<"Yes"<<endl;
    for(int i=0;i<n;i++) {
      cout<<ans[i]<<endl;
    }
  } else {
    cout<<"No"<<endl;
  }
}

Measured memory_bytes: 6856