Dolots博士是一位數論專家,他現在正在研究質數。事實上有人說他已經有公式可以以遞增的順序產生質數了。但是他的公式需要根據數的二進位表示式中 1 出現的次數來排序。也就是說,所有不為負的整數中含有m個1的(在他們的二進位表示式中)應該要被排在含有m+1個1的數之前。
正式一點來說,我們定義不為負的整數序列B,Bn,Bm分別代表序列中第n個數及第m個數。Bn若要排在Bm之前必須符合下列兩個條件之一:
在此O(n)代表n的二進位表示式中1的個數。
為了簡化起見,我們只考慮 0 <= n <= 2147483647的範圍。說明白一點,B序列應該是這個樣子:
| n | Bn | Bn的二進位表示式 |
| 0 1 2 3 4 5 6 . . . 31 32 33 34 35 . . 2147483646 2147483647 |
0 1 2 4 8 16 32 . . . 1073741824 3 5 6 9 . . 2147483646 2147483647 |
0000000000000000000000000000000 |
Dolots博士需要你寫一個程式來幫他算出B序列中的第n個數。你也許會問為何Dolots博士不自己寫程式?他說因為他很忙,所以必須把時間花在更重要的事情上。(事實上是他有點懶惰,不過你可以幫助他,不是嗎?)
Input
每組測試資料一列,有1個整數 n。
Output
對每組測試資料請輸出 Bn。
| Sample Input | Sample Output |
0 1 2 31 32 35 6123512 2147483646 2147483647 |
0 1 2 1073741824 3 9 147227152 2147483646 2147483647 |