#include<iostream>
#include<algorithm>
#include<sstream>
#include<map>
#include<vector>
using namespace std;
long balanc=0;
map<string,int>goodsCount;
map<string,int>goodsPrice;
map<string,int>coinCount;
vector<string> spliteString(string str,char c)
{
    vector<string> res;
    istringstream is(str);
    string temp;
    while(getline(is, temp,c)) res.push_back(temp);
    return res;
}
vector<int> spliteInt(string str,char c)
{
    vector<int> res;
    istringstream is(str);
    string temp;
    while(getline(is, temp,c)) res.push_back(strtol(temp.c_str(), NULL,10));
    return res;
}
void init(string str)
{
    vector<string>res=spliteString(str,' ');
    vector<int> goods=spliteInt(res[1],'-');
    vector<int> coin=spliteInt(res[2],'-');
    goodsCount["A1"]=goods[0];
    goodsCount["A2"]=goods[1];
    goodsCount["A3"]=goods[2];
    goodsCount["A4"]=goods[3];
    goodsCount["A5"]=goods[4];
    goodsCount["A6"]=goods[5];
    goodsPrice["A1"]=2;
    goodsPrice["A2"]=3;
    goodsPrice["A3"]=4;
    goodsPrice["A4"]=5;
    goodsPrice["A5"]=8;
    goodsPrice["A6"]=6; 
    coinCount["1"]=coin[0];
    coinCount["2"]=coin[1];
    coinCount["5"]=coin[2];
    coinCount["10"]=coin[3];
    cout<<"S001:Initialization is successful"<<endl;
}

void pay(string str)
{
    if(str.length()>2) 
    {
        int value=strtol(str.substr(2).c_str(), NULL, 10);
        if(value==1||value==2||value==5||value==10)
        {
            if(coinCount["1"]+coinCount["2"]*2 < value && value>2) cout<<"E003:Change is not enough, pay fail"<<endl;
            else if(goodsCount["A1"]+goodsCount["A2"]+goodsCount["A3"]+goodsCount["A4"]+goodsCount["A5"]+goodsCount["A6"]==0) cout<<"E005:All the goods sold out"<<endl;
            else{
                coinCount[str.substr(2)]++;
                balanc+=value;
                cout<<"S002:Pay success,balance="<< balanc<<endl;
            }
        }else cout<<"E002:Denomination error"<<endl;
        
    }else cout<<"E002:Denomination error"<<endl;
}
void buy(string str)
{
    string goods=str.substr(2).c_str();
    if(goodsCount.count(goods)==0) cout<<"E006:Goods does not exist"<<endl;
    else if(goodsCount[goods]==0) cout<<"E007:The goods sold out"<<endl;
    else if(goodsPrice[goods]>balanc) cout<<"E008:Lack of balance"<<endl;
    else{
        goodsCount[goods]--;
        balanc-=goodsPrice[goods];
        cout<<"S003:Buy success,balance="<< balanc<<endl;
    }
}
void back()
{
    if(balanc<=0) cout<<"E009:Work failure"<<endl; 
    else{
        int a=0,b=0,c=0,d=0;
        d=balanc/10;
        if(d<=coinCount["10"])
        {
            coinCount["10"]-=d;
            balanc-=10*d;
        }else{
            d=coinCount["10"];
            balanc-=10*d;
            coinCount["10"]=0;
        }
        c=balanc/5;
        if(c<=coinCount["5"])
        {
            coinCount["5"]-=c;
            balanc-=5*c;
        }else{
            c=coinCount["5"];
            balanc-=5*c;
            coinCount["5"]=0;
        }
        b=balanc/2;
        if(b<=coinCount["2"])
        {
            coinCount["2"]-=b;
            balanc-=2*b;
        }else{
            b=coinCount["2"];
            balanc-=2*b;
            coinCount["2"]=0;
        }
        a=balanc;
        if(a<=coinCount["1"])
        {
            coinCount["1"]-=a;
            balanc-=a;
        }else{
            a=coinCount["1"];
            balanc-=a;
            coinCount["1"]=0;
        }
        cout<<"1 yuan coin number="<< a<<endl;
        cout<<"2 yuan coin number="<< b<<endl;
        cout<<"5 yuan coin number="<< c<<endl;
        cout<<"10 yuan coin number="<< d<<endl;
    }
    
}
void info(string str)
{
    if(str.length()>2) 
    {
        int value=strtol(str.substr(2).c_str(), NULL, 10);
        if(value==0)
        {
            vector<pair<pair<string,int>,int> >res;
            res.push_back(make_pair(make_pair("A1", goodsPrice["A1"]), goodsCount["A1"]));
            res.push_back(make_pair(make_pair("A2", goodsPrice["A2"]), goodsCount["A2"]));
            res.push_back(make_pair(make_pair("A3", goodsPrice["A3"]), goodsCount["A3"]));
            res.push_back(make_pair(make_pair("A4", goodsPrice["A4"]), goodsCount["A4"]));
            res.push_back(make_pair(make_pair("A5", goodsPrice["A5"]), goodsCount["A5"]));
            res.push_back(make_pair(make_pair("A6", goodsPrice["A6"]), goodsCount["A6"]));
            sort(res.begin(),res.end(),[](const pair<pair<string,int>,int>& p1,const pair<pair<string,int>,int>& p2){
                if(p1.second!=p2.second) return p1.second>p2.second;
                else return p1.first.first < p2.first.first;
            });
            for(int i=0;i<res.size();i++)
                cout<<res[i].first.first.c_str()<<" "<<res[i].first.second<<" "<<res[i].second<<endl; 
        }else if(value==1)
        {
            cout<<"1 yuan coin number="<< coinCount["1"]<<endl;
            cout<<"2 yuan coin number="<< coinCount["2"]<<endl;
            cout<<"5 yuan coin number="<< coinCount["5"]<<endl;
            cout<<"10 yuan coin number="<< coinCount["10"]<<endl;
        }else cout<<"E010:Parameter error"<<endl; 
    }else cout<<"E010:Parameter error"<<endl;
}

int main(int argc,char* argv[])
{
    string input;
    while(getline(cin,input))
    {
        vector<string>res=spliteString(input,';');
        for(int i=0;i<res.size();i++)
        {
            switch(res[i][0])
            {
                case 'r':
                    init(res[i]);
                    break;
                case 'p':
                    pay(res[i]);
                    break;
                case 'b':
                    buy(res[i]);
                    break;
                case 'c':
                    back();
                    break;
                case 'q':
                    info(res[i]);
                    break;
            }
        }
    }
    return 0;
}