변덕쟁이 청소기

잊어버린 회전 방향을 정하고 각 이동 거리를 주어진 범위 안에서 골라 청소기가 (X, Y)에 도착하는 가장 작은 로그를 출력합니다.

보통6백트래킹수학아직 제출이 없습니다시간 제한10초메모리 제한1024 MB

문제

이치로는 프로그래밍 대회 상품으로 최신형 청소기를 받았다. 이 청소기는 집 안을 스스로 돌아다니며 청소한다. 집이 아주 넓어서 무한히 펼쳐진 2차원 평면으로 생각해도 된다. 두 축을 각각 xx축과 yy축이라고 하자. xx축의 양의 방향을 바라볼 때 왼쪽이 yy축의 양의 방향이다.

청소기는 여러 동작을 순서대로 수행하며 청소한다. 한 동작은 회전과 주행으로 이루어진다. 청소기는 먼저 왼쪽이나 오른쪽으로 90도 회전하고, 그다음 바라보는 방향으로 정수 길이만큼 곧장 달린다. 하루가 끝나면 청소기는 그날의 동작 기록을 이치로에게 보고한다.

이 청소기는 사람과 비슷한 인공지능을 갖춘 탓에 사람처럼 잘 잊어버린다. 어떤 회전의 방향을 잊기도 하고, 어떤 주행의 길이를 대략적인 범위로만 기억하기도 한다. 그래도 제대로 동작한 척을 하려면 청소를 마친 뒤에 완전한 기록을 복원해야 한다.

청소기는 처음에 점 (0,0)(0, 0)에서 xx축의 양의 방향을 바라보고 있었다. 청소를 마친 뒤 청소기의 위치 (X,Y)(X, Y)와 청소기가 기억하는 불완전한 기록이 주어진다. 다음 조건을 모두 만족하는 완전한 기록을 복원하자.

  • 동작의 개수는 불완전한 기록과 같다.
  • ii번째 회전의 방향이 불완전한 기록에 남아 있으면, 복원한 기록의 ii번째 회전도 그 방향과 같다.
  • ii번째 주행의 길이는 불완전한 기록이 알려 주는 범위 안에 있다.
  • 모든 동작을 마친 뒤 청소기는 (X,Y)(X, Y)에 있다.

청소를 마친 뒤 청소기가 바라보는 방향은 상관없다. 청소가 끝난 뒤에도 청소기는 자유롭게 회전할 수 있고, 다만 더 달리지는 못한다. 이치로는 기록의 형식과 마지막 위치만 확인하므로 청소기가 실제로 지나간 경로를 맞출 필요도 없다.

입력

첫째 줄에 정수 NN, XX, YY가 주어진다. (1N161 \le N \le 16, 109X,Y109-10^9 \le X, Y \le 10^9) NN은 불완전한 기록에 들어 있는 동작의 개수이고, (X,Y)(X, Y)는 청소를 마친 뒤 청소기의 위치이다.

다음 NN개의 줄 중 ii번째 줄에는 문자 DiD_i와 정수 LLiLL_i, LUiLU_i가 공백으로 구분되어 주어진다. (1LLiLUi555555551 \le LL_i \le LU_i \le 55555555) DiD_iii번째 회전의 방향을 나타내며, L은 왼쪽, R은 오른쪽, ?는 방향을 기억하지 못한다는 뜻이다. LLiLL_iLUiLU_iii번째 주행 길이의 하한과 상한이다.

출력

조건을 만족하는 기록이 하나도 없으면 -1만 출력한다.

기록이 있으면 첫째 줄에 동작의 개수 NN을 출력하고, 이어지는 NN개의 줄 중 ii번째 줄에 ii번째 회전의 방향과 ii번째 주행의 길이를 공백으로 구분해 출력한다. 왼쪽 회전은 L, 오른쪽 회전은 R로 적는다.

조건을 만족하는 기록이 여러 개이면 다음 순서로 가장 작은 기록 하나를 출력한다. 먼저 첫 번째 회전의 방향을 비교하고, 이때 LR보다 작다. 방향이 같으면 첫 번째 주행의 길이를 정수로 비교한다. 길이도 같으면 두 번째 회전의 방향을 비교하고, 이런 식으로 마지막 동작까지 계속한다.