1547: 序列树

内存限制:10 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

我们可以按照如下规则来给二叉树编号:

空树的编号是0;

单结点的树的编号是1;

所有包含m个结点的二叉树的编号比任意一个包含m+1个结点的二叉树的编号小;
任何一个包含m个结点,并且有左子树(称作L)和右子树(称作R)的二叉树,如果它的编号为n,那么所有包含m个结点的编号大于n的二叉树或者它的左子树的编号不小于L的编号,或者它的右子树的编号大于R的编号。


下面列出的是前10个二叉树和编号为20的二叉树:

你的任务是根据给定的编号,输出对应的二叉树


输入

输入只有一行,包含一个整数n(1 <= n <= 500,000,000

输出

输出只有一行,按照如下规则,输出对应编号的二叉树:

如果一棵二叉树没有子树,应当输出X;

如果一棵二叉树有左子树L和右子树R,应当输出(L')X(R'),其中L'和R'分别代表左子树L和右子树R;

如果左子树为空,输出X(R');

如果右子树为空,输出(L')X。

样例输入 复制

20

样例输出 复制

((X)X(X))X