오래된 루비크 큐브를 발견하고, 큐브의 상태를 기록하고 돌리는 동작을 시뮬레이션하는 프로그램을 작성하려고 한다.
루비크 큐브는 페이슬릿(facelet) 이라고 부르는 54개의 작은 정사각형 면으로 덮여 있으며, 여섯 면 각각에 9개씩 있다. 각 페이슬릿은 하나의 색을 가진다. 큐브가 맞춰진 상태일 때는 한 면의 아홉 페이슬릿이 모두 같은 색을 갖는다. 원래 큐브의 여섯 색은 빨강, 노랑, 초록, 파랑, 흰색, 주황이다.

그림 1: 앞면을 돌리는 모습.
큐브의 면을 돌려 페이슬릿의 위치를 바꿀 수 있다. 한 면을 돌리면 9개의 작은 큐브가 붙은 페이슬릿과 함께 새로운 위치로 이동한다(그림 1 참고).
시작 상태와 돌릴 면들의 목록이 주어질 때, 모든 회전을 마친 뒤의 각 페이슬릿 색을 구한다.
첫 줄에는 시나리오의 개수가 주어진다. 각 시나리오는 두 부분으로 이루어진다. 먼저 큐브의 시작 상태가, 그다음 수행할 회전이 이어진다.
시작 상태. 색은 한 글자로 표현되며(페이슬릿 하나당 한 글자, 공백 하나로 구분), 큐브를 펼친 전개도 모양으로 배치된다(그림 2 참고). 위에서 아래로:

그림 2: 입력과 출력에 사용하는 전개도 모양.
회전. 이 부분은 회전 횟수 $t$ ($t > 0$)가 적힌 줄로 시작한다. 이어지는 $t$개의 줄에는 공백 하나로 구분된 두 정수 $s$와 $d$가 있다. $s$는 돌릴 면을 선택하며, 왼면 $0$, 앞면 $1$, 오른면 $2$, 뒷면 $3$, 윗면 $4$, 아랫면 $5$로 번호를 매긴다. $d$는 방향으로, 해당 면 $s$를 정면으로 바라보는 사람을 기준으로 $1$은 시계 방향, $-1$은 반시계 방향을 뜻한다.
각 시나리오마다 Scenario #i: 줄을 출력한다. 여기서 $i$는 $1$부터 시작하는 시나리오 번호이다. 그 다음에 입력과 똑같은 배치로 회전을 모두 수행한 뒤의 큐브 상태를 출력한다. 연속된 두 시나리오 사이에는 빈 줄 하나를 넣어 구분한다.