블록 합치기 게임

아직 제출이 없습니다시간 제한10초메모리 제한256 MB

문제

길이가 모두 2의 거듭제곱인 1차원 블록 nn개가 주어진 순서대로 하나씩 나온다. 블록이 나오면 지금까지 쌓아 놓은 블록 줄의 맨 왼쪽이나 맨 오른쪽에 붙여야 한다. 첫 블록은 어느 쪽에 붙여도 같은 줄이 된다.

이웃한 두 블록의 길이가 같아지면 두 블록은 길이가 두 배인 블록 하나로 합쳐진다. 합쳐진 블록이 다시 이웃과 길이가 같으면 길이가 같은 이웃이 없어질 때까지 합쳐진다. 합칠 수 있는 이웃 쌍은 어느 순간에도 최대 하나뿐이라서, 합쳐지는 결과는 고른 방향만으로 정해진다.

예를 들어 현재 줄이 2, 4, 16일 때 길이 2인 블록을 왼쪽에 붙이면 2, 2, 4, 16이 4, 4, 16을 거쳐 8, 16이 된다. 같은 블록을 오른쪽에 붙이면 2, 4, 16, 2가 되고 합쳐지는 쌍은 없다.

블록 nn개를 모두 붙인 뒤 블록이 하나만 남으면 이긴다. 주어진 순서로 이길 수 있는지 판정하고, 이길 수 있으면 붙이는 방향을 출력하라.

입력

첫 줄에 테스트 케이스의 수 TT (1T1001 \le T \le 100)가 주어진다.

각 테스트 케이스는 두 줄이다. 첫 줄에 블록의 개수 nn (1n10001 \le n \le 1000)이 주어진다. 둘째 줄에 블록 nn개의 길이가 나오는 순서대로 공백으로 구분되어 주어진다. 각 길이는 2의 거듭제곱이고, 한 테스트 케이스의 길이 합은 2132^{13} 이하다.

출력

각 테스트 케이스마다 한 줄을 출력한다.

블록 하나만 남길 수 없으면 no를 출력한다.

남길 수 있으면 길이가 nn인 문자열을 출력한다. ii번째 문자는 ii번째 블록을 왼쪽에 붙이면 l, 오른쪽에 붙이면 r이다. 이기는 문자열이 여러 개면 사전순으로 가장 앞서는 하나만 출력한다. lr보다 앞서고 첫 블록은 어느 쪽에 붙여도 같으므로, 이 문자열의 첫 문자는 항상 l이다.