#include<stdio.h>
int MIN(int a,int b){return a<b?a:b;}
int d[100010][4][4][4]={};
char w[100010][4][4][4]={};
int f[100010][4][4][4]={};
void g(int i,int j,int k,int l,int a,int b,int c,char s){
  d[i][j][k][l]=1;
  f[i][j][k][l]=a*16+b*4+c;
  w[i][j][k][l]=s;
}
int main(){
  int n,a,b,c,i,j,k,l;
  char s[1000010];
  scanf("%d %d %d %d",&n,&a,&b,&c);
  if(a>3)a=3;
  if(b>3)b=3;
  if(c>3)c=3;
  d[0][a][b][c]=1;
  for(i=0;i<n;i++){
    scanf("%s",s);
    for(j=0;j<4;j++){
      for(k=0;k<4;k++){
	for(l=0;l<4;l++){
	  if(d[i][j][k][l]==0)continue;
	  if(s[1]=='B'){
	    if(k){  
	      g(i+1,MIN(j+1,3),k-1,l,j,k,l,'A');
	      if(k==3)g(i+1,MIN(j+1,3),k,l,j,k,l,'A');
	    }
	    if(j){
	      g(i+1,j-1,MIN(k+1,3),l,j,k,l,'B');
	      if(j==3)g(i+1,j,MIN(k+1,3),l,j,k,l,'B');
	    }
	  }
	  if(s[0]=='A'&&s[1]=='C'){
	    if(l){
	      g(i+1,MIN(j+1,3),k,l-1,j,k,l,'A');
	      if(l==3)g(i+1,MIN(j+1,3),k,l,j,k,l,'A');
	    }
	    if(j){
	      g(i+1,j-1,k,MIN(l+1,3),j,k,l,'C');
	      if(j==3)g(i+1,j,k,MIN(l+1,3),j,k,l,'C');
	    }
	  }
	  if(s[0]=='B'){
	    if(l){
	      g(i+1,j,MIN(k+1,3),l-1,j,k,l,'B');
	      if(l==3)g(i+1,j,MIN(k+1,3),l,j,k,l,'B');
	    }
	    if(k){
	      g(i+1,j,k-1,MIN(l+1,3),j,k,l,'C');
	      if(k==3)g(i+1,j,k,MIN(l+1,3),j,k,l,'C');
	    }	 
	  }
	}
      }
    }
  }
  for(i=0;i<4;i++){
    for(j=0;j<4;j++){
      for(k=0;k<4;k++){
	if(d[n][i][j][k]){//printf("%d %d %d",i,j,k);
	  printf("Yes\n");
	  for(l=n;l;l--){
	    a=f[l][i][j][k];
	    s[l]=w[l][i][j][k];
	    i=a/16;
	    j=(a%16)/4;
	    k=a%4;//printf("%d %d %d\n",i,j,k);
	  }
	  for(l=0;l<n;l++)printf("%c\n",s[l+1]);
	  return 0;
	}
      }
    }
  }
  printf("No\n");
  return 0;
}
