#P7093. [CERC2014] Can't stop playing

[CERC2014] Can't stop playing

Description

有些计算机游戏非常有趣,这个问题可能就是关于其中之一。你得到了一系列一维的方块,每个方块的长度都是 2 的幂。游戏的目标是将所有方块合并成一个大方块。方块一个接一个地呈现,对于每一个方块,你必须决定是立即粘在最左边的方块的左边还是最右边的方块的右边。

每当两个相同大小的方块相邻时,它们会合并成一个长度是它们各自两倍的方块。注意,只要可能,生成的方块会立即与相邻的方块合并。例如,如果当前的方块序列是 2,4,162, 4, 16,那么将 22 粘在左边会导致 8,168, 16,而粘在右边则会得到 2,4,16,22, 4, 16, 2。注意,在任何时刻最多只有一对可合并的方块。

你又一次输了游戏,并且想知道是否有任何方法可以赢。分析序列以找出答案。

Input Format

输入的第一行包含测试用例的数量 TT。接下来的描述是测试用例的内容:

每个测试用例由两行组成。第一行包含一个正整数 n1000n \leq 1 000 —— 序列的长度。下一行包含 nn 个方块长度的序列,每个长度都是 2 的幂。所有长度的总和不超过 2132^{13}

Output Format

对于每个测试用例,输出一行,包含单词 no\texttt{no},如果赢得游戏是不可能的。否则,输出一个由 nn 个字母 l\texttt{l}r\texttt{r} 组成的单词,表示相应的方块应该粘在左边还是右边。注意,对于第一个方块,这无关紧要。

3
9
2 8 4 1 1 4 4 4 4
5
2 16 4 8 2
3
2 2 2
rrrlllrrr
no
no

Hint

题面翻译由 ChatGPT-4o 提供。