数的序号

题目描述

我们可以用下面的方案给二叉树标号: - 空树的序号为 $0$。 - 只有一个根结点的树序号为 $1$。 - 所有包含 $m$ 个结点的二叉树的序号一定比任何一个包含 $m+1$ 个结点的二叉树的序号小。 - 对于任何一棵二叉树,设其左子树序号为 $L$,右子树序号为 $R$,且它有 $m$ 个结点,若它的序号为 $n$,则所有序号大于 $n$ 的 $m$ 个结点的二叉树,要么左子树序号大于 $L$,要么左子树序号等于 $L$ 且右子树序号大于 $R$。 例如,编号为 $0$ 到 $5$ 的六棵树形状如下: ```plain 0 1 2 3 4 5 X X X X X \ / \ \ X X X X \ / X X ``` 你的任务就是对给定的序号,输出该序号所对应的二叉树。

输入输出格式

输入格式


**本题有多组数据。** 输入的每行有一个非负整数 $n$,$n=0$ 表示输入结束,此时**不需要**输出 $n=0$ 的空树。

输出格式


对于每组数据,输出一行,代表序号 $n$ 对应的树。 一棵二叉树的表示为 `(L)X(R)`,其中 $L,R$ 分别是左子树和右子树的表示,如一侧为空则省略,例如只有左子树则表示为 `(L)X`。

输入输出样例

输入样例 #1

1   
20 
31117532   
0 

输出样例 #1

X
((X)X(X))X
(X(X(((X(X))X(X))X(X))))X(((X((X)X((X)X)))X)X)

说明

### 数据规模与约定 对于所有测试点,保证 $1\le n\le 5\times10^8$,数据组数不超过 $50$。