FAST_IO = 1
if FAST_IO:
    import io, sys, atexit
    rr = iter(sys.stdin.read().splitlines()).next
    sys.stdout = _OUTPUT_BUFFER = io.BytesIO()
    @atexit.register
    def write():
        sys.__stdout__.write(_OUTPUT_BUFFER.getvalue())
else:
    rr = raw_input
rri = lambda: int(rr())
rrm = lambda: map(int, rr().split())

####
from collections import Counter

def solve3(N, A, B, C, SA):
    return solve(N, A, B, C, SA, True)
    S = A+B+C
    # max(A, B, C) > 2
    # min(A, B, C) = 0
    std = sorted([A, B, C])
    if std[1] == 0:  # 0, 0, >2
        return solve(N, A, B, C, SA, True)
    # 0, >0, >2
    
def solve2(N, A, B, C, SA):
    def canonical(a, b, c):
        return a, b, c

    if A > 2 or B > 2 or C > 2:
        return solve3(N, A, B, C, SA)
    seen = [None] * (N+1)
    seen[0] = {canonical(A, B, C)}
    for i, x in enumerate(SA, 1):
        seen[i] = set()
        for a, b, c in seen[i-1]:
            if x == 0:  # BC
                na = a; nb = b + 1; nc = c - 1
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
                na = a; nb = b - 1; nc = c + 1
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
            if x == 1:  # AC
                na = a + 1; nb = b; nc = c - 1
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
                na = a - 1; nb = b; nc = c + 1
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
            if x == 2:  # AB
                na = a + 1; nb = b - 1; nc = c
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
                na = a - 1; nb = b + 1; nc = c
                if na >= 0 and nb >= 0 and nc >= 0:
                    seen[i].add(canonical(na, nb, nc))
        if not seen[i]: return
    ans = []
    a,b,c = seen[-1].pop()
    for i in xrange(N-1, -1, -1):
        x = SA[i]
        if x == 0:  # BC
            na = a; nb = b + 1; nc = c - 1
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('C')
                a,b,c = nei
                continue
            na = a; nb = b - 1; nc = c + 1
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('B')
                a,b,c = nei
                continue
            return
        if x == 1:  # AC
            na = a + 1; nb = b; nc = c - 1
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('C')
                a,b,c = nei
                continue
            na = a - 1; nb = b; nc = c + 1
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('A')
                a,b,c = nei
                continue
            return
        if x == 2:  # AB
            na = a + 1; nb = b - 1; nc = c
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('B')
                a,b,c = nei
                continue
            na = a - 1; nb = b + 1; nc = c
            nei = canonical(na, nb, nc)
            if nei in seen[i]:
                ans.append('A')
                a,b,c = nei
                continue
            return 
    return ans[::-1]
    
def solve(N, A, B, C, SA, flag=False):
    if flag is False and min(A, B, C) == 0:
        return solve2(N, A, B, C, SA)
    ans = []
    for x in SA:
        if x == 0:  # BC
            if B >= C:
                B -= 1
                C += 1
                ans.append('C')
            else:
                B += 1
                C -= 1
                ans.append('B')
        elif x == 1: #AC
            if A >= C:
                A -= 1
                C += 1
                ans.append('C')
            else:
                A += 1
                C -= 1
                ans.append('A')
        else:  # AB
            if A >= B:
                A -= 1
                B += 1
                ans.append('B')
            else:
                A += 1
                B -= 1
                ans.append('A')
        if A<0 or B<0 or C<0: return
    return ans
    
N, A, B, C = rrm()
SA = []
for _ in xrange(N):
    s = rr()
    if s == 'AB':
        SA.append(2)
    elif s == 'BC':
        SA.append(0)
    else:
        SA.append(1)
ans = solve(N, A, B, C, SA)
if ans:
    print "Yes"
    for x in ans: print x
else:
    print "No"



Measured memory_bytes: 124680