# 数的序号

## 题目描述

我们可以用下面的方案给二叉树标号：

- 空树的序号为 $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

```
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$。