Statement
위에서 아래로 내려가는 사다리의 세로 막대가 개 있다. 막대는 왼쪽부터 번부터 번까지 번호가 붙어 있다. 가로선을 놓을 수 있는 높이는 위에서부터 번부터 번까지이다. 처음에는 가로선이 없다.
사다리를 탈 때에는 하나의 세로 막대의 맨 위에서 출발하여 아래로 내려간다. 내려가는 도중 현재 막대에 연결된 가로선을 만나면, 그 가로선을 따라 연결된 옆 막대로 이동한 뒤 다시 아래로 내려간다. 이를 맨 아래에 도착할 때까지 반복한다.
다음 두 연산을 할 수 있다.
- : 높이 에서 번 막대와 번 막대를 잇는 가로선의 유무를 바꾼다. 가로선이 없다면 만들고, 있다면 지운다.
- : 번 막대의 맨 위에서 출발해 사다리를 따라 내려간다. 맨 아래에서 도착한 막대의 번호를 구한다. 이 연산은 사다리를 바꾸지 않는다.
같은 높이에서 두 가로선이 한 막대를 공유할 수 없다. 따라서 번 연산으로 가로선을 만든 뒤에도 이 조건이 성립해야 한다. 이면 가로선을 놓을 수 없으며 번 연산을 사용할 수 없다.
개의 목표 쌍 이 주어진다. 정확히 번의 번 연산을 순서대로 수행하여, 번째 번 연산이 번 막대에서 출발하고 번 막대에 도착하도록 하여라. 전체 연산 순서에서 번 연산은 최대 번 사용할 수 있다.
Input
입력은 다음과 같은 형식으로 주어진다.
각 케이스는 다음과 같은 형식으로 주어진다.
는 테스트 케이스의 수이다. 번째 목표 쌍은 이다.
Output
각 테스트 케이스마다 먼저 연산의 총 개수 를 출력한다. 이어서 개의 줄에 연산을 순서대로 출력한다. 각 연산은 또는 형식이다.
번 연산은 정확히 번이어야 한다. 번째 번 연산의 출발 막대는 , 도착 막대는 여야 한다. 번 연산은 번 이하이어야 한다. 가능한 출력이 여러 가지라면 아무거나 출력해도 된다.
Constraints
- .
- .
- ().
- 모든 테스트 케이스에 대한 의 합은 이하이다.
Subtasks
Samples
번 케이스에서 첫 번째 번 연산은 번 막대에서 출발해 번 막대에 도착하고, 두 번째는 번 막대에서 출발해 번 막대에 도착한다. 번 케이스에서는 가로선이 필요 없다.