#include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { bool instruction_mode = false; string line; unordered_map stacks; struct Instruction { int quantity; int from; int to; }; vector instructions; int stack_max = 0; while (getline(cin, line)) { if (0 == line.size()) { instruction_mode = true; for (auto &it : stacks) { it.second = it.second.substr(0, it.second.size()-1); } continue; } if (instruction_mode) { Instruction instruction; line = line.substr(5); string::size_type n = line.find(' '); instruction.quantity = stoi(line.substr(0,n)); line = line.substr(n+6); n = line.find(' '); instruction.from = stoi(line.substr(0,n)); line = line.substr(n+4); instruction.to = stoi(line); instructions.push_back(instruction); } else { for (int i = 1, s = 1; i < line.size(); i+=4, s++) { if (line[i] == ' ') { continue; } if (!stacks.contains(s)) { stacks[s] = ""; } stacks[s] += line[i]; if (s > stack_max) { stack_max = s; } } } } for (unsigned int i = 0; i < instructions.size(); i++) { string taken = stacks[instructions[i].from].substr(0, instructions[i].quantity); stacks[instructions[i].from] = stacks[instructions[i].from].substr(instructions[i].quantity); stacks[instructions[i].to] = taken + stacks[instructions[i].to]; } for(int s = 1; s <= stack_max; s++) { cout << stacks[s][0]; } cout << endl; }