import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
// while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
// }
String s = in.nextLine();
String[] ss = s.split(";");
int len = ss.length;
int[] prices = {2, 3, 4, 5, 8, 6};
int[] coinTypes = {1, 2, 5, 10};
int balance = 0;
List<Good> goods = new ArrayList<>();
List<Coin> coins = new ArrayList<>();
for (int i = 0; i < len; i++) {
String command = ss[i].trim();
if (command.charAt(0) == 'r') {
init(command, prices, coinTypes, goods, coins);
System.out.println("S001:Initialization is successful");
}
if (command.charAt(0) == 'p') {
int type = Integer.parseInt(command.split(" ")[1]);
int sum12 = 0;
for (Coin coin : coins) {
if (coin.value == 1 || coin.value == 2) {
sum12 = sum12 + coin.value * coin.count;
}
}
boolean hasGood = false;
for (Good good : goods) {
if (good.count != 0) {
hasGood = true;
break;
}
}
if (!(type == 1 || type == 2 || type == 5 || type == 10)) {
System.out.println("E002:Denomination error");
} else if (sum12 < type) {
System.out.println("E003:Change is not enough, pay fail");
} else if (!hasGood) {
System.out.println("E005:All the goods sold out");
} else {
for (Coin coin : coins) {
if (coin.value == type) {
coin.count++;
break;
}
}
balance = type + balance;
System.out.println("S002:Pay success,balance=" + balance);
}
}
if (command.charAt(0) == 'b') {
String name = command.split(" ")[1];
boolean exit = false;
boolean has = false;
boolean buy = false;
int curPrice = 0;
for (Good good : goods) {
if (name.equals(good.name)) {
exit = true;
if (good.count != 0) {
has = true;
}
if (good.price <= balance) {
curPrice = good.price;
buy = true;
}
break;
}
}
if (!exit) {
System.out.println("E006:Goods does not exist");
} else {
if (!has) {
System.out.print("E007:The goods sold out");
} else {
if (!buy) {
System.out.println("E008:Lack of balance");
} else {
balance = balance - curPrice;
System.out.println("S003:Buy success,balance=" + balance);
}
}
}
}
if (command.charAt(0) == 'c') {
String[] items = new String[4];
if (balance == 0) {
System.out.println("E009:Work failure");
} else {
for (int j = 3; j >= 0; j--) {
if (coins.get(j).count >= balance / coinTypes[j]) {
coins.get(j).count = coins.get(j).count - balance / coinTypes[j];
items[j] = coinTypes[j] + " yuan coin number=" + (balance / coinTypes[j]);
balance = balance - (balance / coinTypes[j]) * coinTypes[j];
} else {
items[j] = coinTypes[j] + " yuan coin number=" + coins.get(j).count;
balance = balance - (coins.get(j).count * coinTypes[j]);
coins.get(j).count = 0;
}
}
for (int j = 0; j < items.length; j++) {
System.out.println(items[j]);
}
}
}
if (command.charAt(0) == 'q') {
if (!command.contains(" ")) {
System.out.println("E010:Parameter error");
} else {
try {
int n = Integer.parseInt(command.split(" ")[1]);
if (n == 0) {
Collections.sort(goods);
for (int j = 0; j < goods.size(); j++) {
Good good = goods.get(j);
System.out.println(good.name + " " + good.price + " " + good.count);
}
} else if (n == 1) {
for (int j = 0; j < 4; j++) {
Coin coin = coins.get(j);
System.out.println(coin.value + " yuan coin number=" + coin.count);
}
} else {
System.out.println("E010:Parameter error");
}
} catch (NumberFormatException e) {
System.out.println("E010:Parameter error");
}
}
}
}
}
private static void init(String command, int[] prices, int[] coinTypes,
List<Good> goods, List<Coin> coins) {
String goodsStr = command.split(" ")[1];
String coinsStr = command.split(" ")[2];
String[] goodsCount = goodsStr.split("-");
String[] coinsCount = coinsStr.split("-");
for (int i = 0; i < goodsCount.length; i++) {
int count = Integer.parseInt(goodsCount[i]);
Good good = new Good("A" + (i + 1), prices[i], count);
goods.add(good);
}
for (int i = 0; i < coinsCount.length; i++) {
int count = Integer.parseInt(coinsCount[i]);
Coin coin = new Coin(coinTypes[i], count);
coins.add(coin);
}
}
}
class Coin {
int value;
int count;
Coin (int value, int count) {
this.value = value;
this.count = count;
}
}
class Good implements Comparable<Good> {
String name;
int price;
int count;
Good (String name, int price, int count) {
this.name = name;
this.price = price;
this.count = count;
}
public int compareTo(Good good) {
return this.count - good.count;
}
}