Manobras no pátio
Time limit: 5000 msMemory limit: 256 MB
Há vagões, numerados de 1 a . Inicialmente, cada vagão forma sozinho um trem. Cada trem tem uma ordem da esquerda para a direita. Execute os comandos:
J x y: se e estiverem em trens diferentes, una o trem inteiro que contém ao trem inteiro que contém , colocando o primeiro à esquerda do segundo e preservando a ordem interna de ambos. Se já estiverem no mesmo trem, não faça nada. Os vagões e não precisam estar nas extremidades.C x: separe o trem imediatamente antes do vagão . A parte à esquerda e a parte que começa em tornam-se trens independentes, preservando suas ordens. Se já for o primeiro vagão, não faça nada.V x: inverta a ordem de todo o trem que contém .Q x: informe os vizinhos imediatos à esquerda e à direita de no trem atual.
As operações referem-se sempre aos identificadores originais dos vagões, que nunca mudam.
Input
A primeira linha contém e . As próximas linhas contêm os comandos descritos acima.
- ;
- .
Output
Para cada comando Q x, imprima dois inteiros: o vizinho à esquerda e o vizinho à direita. Use 0 para uma extremidade sem vizinho.
Samples
Sample 1
Input
4 9 J 1 2 J 3 4 J 2 3 V 2 Q 3 C 3 Q 3 J 1 4 Q 1
Output
4 2 0 2 2 4
Após as três junções, o trem é 1,2,3,4; após a inversão, é 4,3,2,1. O corte deixa 4 separado de 3,2,1. A última junção forma 3,2,1,4.