#315. 序列树

序列树

说明

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

空树的编号是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