# 自动售货系统,详见注解

good_value = [2,3,4,5,8,6]
coin_value = [1,2,5,10]
input = 'r 22-18-21-21-7-20 3-23-10-6;c;q0;p 1;b A6;c;b A5;b A1;c;q1;p 5;'
input = 'r 28-12-11-1-16-10 19-30-8-11;b A1;p 1;'

L = input.strip().split(';')
left = 0 # 这里要维护一个已投币总额,或购物剩余的一个变量left
for com in L:
    if com: # 最后一个分号;后面为空,排除
        #---------------------------------------------------------------------
        # 命令合法检查

        if com[0] not in 'rpbcq':
            print('E010:Parameter error')
            continue
        else:
            if com[0] in 'rpbq' and com[1] != ' ':
                print('E010:Parameter error')
                continue
            if com[0] == 'c' and len(com) != 1:
                print('E010:Parameter error')
                continue

        #---------------------------------------------------------------------
        # 初始化:长度不合法提示

        if com[0]=='r':
            good_num,coin_num = com[2:].strip().split()
            good_num = list(map(int,good_num.split('-'))) # A1~A6
            coin_num = list(map(int,coin_num.split('-'))) # 1,2,5,10
            #print('good_value=',good_value)
            #print('good_num=',good_num)
            #print('coin_value=',coin_value)
            #print('coin_num=',coin_num)
            if len(good_num)==6 and len(coin_num)==4:
                print('S001:Initialization is successful')
            else:
                print('E010:Parameter error')

        #---------------------------------------------------------------------
        # 投币

        if com[0]=='p':
            coin = int(com[2:].strip())
            #print('>>  coin=',coin)
            if not(coin==1 or coin==2 or coin==5 or coin==10): # 只接受1,2,5,10的投币
                print('E002:Denomination error')
            elif (coin==5 or coin==10) and coin_value[0]*coin_num[0] + coin_value[1]*coin_num[1] < coin: # 投5,10币时检查1,2元币是否足够找零
                print('E003:Change is not enough, pay fail')
            elif sum(good_num)==0:
                print('E005:All the good_num sold out')
            else:   # 投币成功后,钱币数量加1,投币总额增加
                if coin==1:
                    coin_num[0] += 1
                if coin==2:
                    coin_num[1] += 1
                if coin==5:
                    coin_num[2] += 1
                if coin==10:
                    coin_num[3] += 1
                left += coin                
                #print('coin_num=',coin_num)
                print('S002:Pay success,balance='+str(left))    # 提示投币总额
            #print('----post-left=',left)

        #---------------------------------------------------------------------   
        # 购物

        if com[0]=='b':
            buy = com[2:].strip()
            #print('>>  buy=',buy)
            good_name = ['A1','A2','A3','A4','A5','A6']
            if buy not in good_name:
                print('E006:Goods does not exist')
            elif good_num[good_name.index(buy)]==0:
                print('E007:The goods sold out')
            elif left < good_value[good_name.index(buy)]:
                print('E008:Lack of balance')
            else:   # 购物成功后,投币总额减少,货物数量减1
                left -= good_value[good_name.index(buy)]
                good_num[good_name.index(buy)] -= 1
                #print('left=',left)
                #print('good_num=',good_num)
                print('S003:Buy success,balance='+str(left))    # 提示投币总额
            #print('----buy-left=',left)

        #---------------------------------------------------------------------
        # 退币
        #    
        if com[0]=='c':
            #print('>>  change')
            if left == 0:
                print('E009:Work failure')
            elif left > 0:
                c1 = left%10%5%2    # 找零规则,类似于进制转换算法,通过整除和余数实现
                c2 = left%10%5//2
                c5 = left%10//5
                c10 = left//10
                # coin_value[0]*coin_num[0] + coin_value[1]*coin_num[1] < coin: # 投5,10币时检查1,2元币是否足够找零
                # 按正常逻辑,上面这条规则保证了,当1元钱币不够时,coin_num[0]==-1,此时强制coin_num[0]=0,c1=0,欠用户1元
                if coin_num[0]-c1 < 0:
                    coin_num[0] = 0
                    c1 = 0
                else:
                    coin_num[0] -= c1                    
                coin_num[1] -= c2
                coin_num[2] -= c5
                coin_num[3] -= c10

                print('1 yuan coin number='+str(c1))
                print('2 yuan coin number='+str(c2))
                print('5 yuan coin number='+str(c5))
                print('10 yuan coin number='+str(c10))
                #print('coin_num=',coin_num)
                left -= (c1+ 2*c2 + 5*c5 + 10*c10)
            #print('----change-left=',left)

        #---------------------------------------------------------------------
        # 查询

        if com[0]=='q':
            query = int(com[2:].strip())
            #print('>>  query=',query)
            if query==0:
                tmp = [['A1 2 ',good_num[0]],
                       ['A2 3 ',good_num[1]],
                       ['A3 4 ',good_num[2]],
                       ['A4 5 ',good_num[3]],
                       ['A5 8 ',good_num[4]],
                       ['A6 6 ',good_num[5]]]
                tmp = sorted(tmp,key=lambda x:x[1],reverse=1)   # 按货物数量排序
                for i in range(6):
                    print(tmp[i][0]+str(tmp[i][1]))
            if query==1:
                print('1 yuan coin number='+str(coin_num[0]))
                print('2 yuan coin number='+str(coin_num[1]))
                print('5 yuan coin number='+str(coin_num[2]))
                print('10 yuan coin number='+str(coin_num[3]))