Problem p02692 (python)

Fixed submission:
# -*- coding: utf-8 -*-
import sys
from collections import defaultdict

N,A,B,C=map(int, sys.stdin.readline().split())
S=[ sys.stdin.readline().strip() for _ in range(N) ]

L=[]    #i回目の選択で1を足す変数の名前を順番に格納

for i,s in enumerate(S): #0-indexed
    if s=="AB":
        if A<B:
            A+=1
            B-=1
            L.append("A")
        elif B<A:
            A-=1
            B+=1
            L.append("B")
        elif A==B==0:
            print "No"
            quit()
        elif A==B:
            try: #next_sが取れるときは
                next_s=S[i+1]
                if next_s=="AB":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                    A+=1
                    B-=1
                    L.append("A")
                elif next_s=="AC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    A+=1
                    B-=1
                    L.append("A")
                elif next_s=="BC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    A-=1
                    B+=1
                    L.append("B")
            except: #最終行のときはどっちを取っても良い
                A+=1
                B-=1
                L.append("A")
    elif s=="AC":
        if A<C:
            A+=1
            C-=1
            L.append("A")
        elif C<A:
            A-=1
            C+=1
            L.append("C")
        elif A==C==0:
            print "No"
            quit()
        elif A==C:
            try: #next_sが取れるときは
                next_s=S[i+1]
                if next_s=="AC":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                    A+=1
                    C-=1
                    L.append("A")
                elif next_s=="AB":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    A+=1
                    C-=1
                    L.append("A")
                elif next_s=="BC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    A-=1
                    C+=1
                    L.append("C")
            except: #最終行のときはどっちを取っても良い
                A+=1
                C-=1
                L.append("A")
    elif s=="BC":
        if B<C:
            C-=1
            B+=1
            L.append("B")
        elif C<B:
            B-=1
            C+=1
            L.append("C")
        elif B==C==0:
            print "No"
            quit()
        elif B==C:
            try: #next_sが取れるときは
                next_s=S[i+1]
                if next_s=="BC":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                    B+=1
                    C-=1
                    L.append("B")
                elif next_s=="AB":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    B+=1
                    C-=1
                    L.append("B")
                elif next_s=="AC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                    B-=1
                    C+=1
                    L.append("C")
            except: #最終行のときはどっちを取っても良い
                A+=1
                C-=1
                L.append("A")
print "Yes"
for x in L:
    print x

Buggy submission (verdict: Runtime Error):
# -*- coding: utf-8 -*-
import sys
from collections import defaultdict

N,A,B,C=map(int, sys.stdin.readline().split())
S=[ sys.stdin.readline().strip() for _ in range(N) ]

L=[]    #i回目の選択で1を足す変数の名前を順番に格納

for i,s in enumerate(S): #0-indexed
    if s=="AB":
        if A<B:
            A+=1
            B-=1
            L.append("A")
        elif B<A:
            A-=1
            B+=1
            L.append("B")
        elif A==B==0:
            print "No"
            quit()
        elif A==B:
            next_s=S[i+1]
            if next_s=="AB":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                A+=1
                B-=1
                L.append("A")
            elif next_s=="AC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                A+=1
                B-=1
                L.append("A")
            elif next_s=="BC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                A-=1
                B+=1
                L.append("B")
            pass
    elif s=="AC":
        if A<C:
            A+=1
            C-=1
            L.append("A")
        elif C<A:
            A-=1
            C+=1
            L.append("C")
        elif A==C==0:
            print "No"
            quit()
        elif A==C:
            next_s=S[i+1]
            if next_s=="AC":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                A+=1
                C-=1
                L.append("A")
            elif next_s=="AB":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                A+=1
                C-=1
                L.append("A")
            elif next_s=="BC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                A-=1
                C+=1
                L.append("C")
    elif s=="BC":
        if B<C:
            C-=1
            B+=1
            L.append("B")
        elif C<B:
            B-=1
            C+=1
            L.append("C")
        elif B==C==0:
            print "No"
            quit()
        elif B==C:
            next_s=S[i+1]
            if next_s=="BC":    #次が2文字とも一致している場合は、どっちの文字に1を足しても良い
                B+=1
                C-=1
                L.append("B")
            elif next_s=="AB":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                B+=1
                C-=1
                L.append("B")
            elif next_s=="AC":    #次に同じ文字が1文字出てくる場合は、その文字の方に+1
                B-=1
                C+=1
                L.append("C")

print "Yes"
for x in L:
    print x