import java.util.ArrayList;
import java.util.Scanner;
public class StackingBlocks2 {
private static Scanner sc = new Scanner(System.in);
private static String[] decks = new String[100];
private static ArrayList<String> blocksRemoved = new ArrayList<String>();
public static void main(String[] args) {
int deck = 0;
deck = sc.nextInt();
for(int i = 0; i < deck; i++){
}
while(sc.hasNext()){
if(manipulation(sc.next())){
//正常に操作が行われているなら、何もしない
}
else{
break;
}
}
for(int i = 0; i < blocksRemoved.size(); i++){
System.out.println(blocksRemoved.get(i));
}
}
public static boolean manipulation(String input){
if(input.compareTo("push") == 0){
push(sc.nextInt() - 1);
return true;
}
else if(input.compareTo("pop") == 0){
pop(sc.nextInt() - 1);
return true;
}
else if(input.compareTo("move") == 0){
move(sc.nextInt() - 1, sc.nextInt() - 1);
return true;
}
else if(input.compareTo("quit") == 0){
return false;
}
else{
return true;
}
}
private static void push(int index){
String block = sc.next();
String deck = decks[index];
String newDeck = deck + block;
decks[index] = newDeck;
}
private static void pop(int index){
String deck = decks[index];
String block = String.valueOf(deck.charAt(deck.length() - 1));
String newDeck = deck.substring(0, deck.length() - 1);
blocksRemoved.add(block);
decks[index] = newDeck;
}
private static void move(int indexRemoveFromDeck, int indexAddToDeck){
String deckFrom = decks[indexRemoveFromDeck];
String block = String.valueOf(deckFrom.charAt(deckFrom.length() - 1));
String newDeckFrom = deckFrom.substring(0, deckFrom.length() - 1);
decks[indexRemoveFromDeck] = newDeckFrom;
String deckTo = decks[indexAddToDeck];
String newDeckTo = deckTo + block;
decks[indexAddToDeck] = newDeckTo;
}
}