시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
어느 유치원 졸업식에는 특이한 순서가 있다. 처음에는 모든 여학생이 왼쪽에, 모든 남학생이 오른쪽에 서며, 두 무리 사이에는 빈칸 하나가 있다. 아래 네 가지 이동을 차례로 사용해서 모든 남학생이 왼쪽, 모든 여학생이 오른쪽에 서고 두 무리 사이에 다시 빈칸 하나가 오도록 만들어야 한다.
| 이동 코드 | 동작 |
|---|---|
| 왼쪽으로 슬라이드 (s) | 빈칸 오른쪽에 있는 아이가 빈칸으로 이동한다. |
| 오른쪽으로 슬라이드 (S) | 빈칸 왼쪽에 있는 아이가 빈칸으로 이동한다. |
| 왼쪽으로 뛰어넘기 (h) | 빈칸 오른쪽 두 칸에 있는 아이가 사이의 아이를 뛰어넘어 빈칸으로 이동한다. |
| 오른쪽으로 뛰어넘기 (H) | 빈칸 왼쪽 두 칸에 있는 아이가 사이의 아이를 뛰어넘어 빈칸으로 이동한다. |
각 이동 후에는 움직인 아이가 있던 자리가 새 빈칸이 된다. 프로그램은 각 반의 여학생 수 nGirls와 남학생 수 nBoys를 입력받아 시작 배치를 목표 배치로 바꾸는 이동열을 찾아야 한다. 이동 횟수는 nGirls * nBoys + nGirls + nBoys 이하여야 한다. 모든 여학생-남학생 쌍이 서로 한 번씩 지나가고, 평균적으로 각 아이가 빈칸을 한 번 지나가면 충분하다는 한계이다.
첫 줄에 문제 인스턴스의 수 N이 주어진다. 1 <= N <= 1000이다. 이어서 N개의 줄이 주어지며, 각 줄은 다음 형식이다.
nGirls nBoys
nGirls: 여학생의 수nBoys: 남학생의 수한 반에는 아이가 최소 1명, 최대 24명 있다.
각 문제 인스턴스마다 첫 줄에 이동 횟수를 출력한다. 그 다음 줄에는 필요한 이동 코드를 순서대로 공백 없이 출력한다.
정답이 되는 이동열은 하나로 정해져 있지 않다. 시작 배치를 목표 배치로 바꾸고 이동 횟수 제한을 만족하는 어떤 이동열도 사용할 수 있다.