Q10232: Bit-wise Sequence

Dolots博士是一位數論專家,他現在正在研究質數。事實上有人說他已經有公式可以以遞增的順序產生質數了。但是他的公式需要根據數的二進位表示式中 1 出現的次數來排序。也就是說,所有不為負的整數中含有m個1的(在他們的二進位表示式中)應該要被排在含有m+1個1的數之前。

正式一點來說,我們定義不為負的整數序列B,Bn,Bm分別代表序列中第n個數及第m個數。Bn若要排在Bm之前必須符合下列兩個條件之一:

  1. O(Bn) < O(Bm)
  2.  O(Bn) = O(Bm)並且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
0000000000000000000000000000001
0000000000000000000000000000010
0000000000000000000000000000100
0000000000000000000000000001000
0000000000000000000000000010000
0000000000000000000000000100000
.
.
.
1000000000000000000000000000000
0000000000000000000000000000011
0000000000000000000000000000101
0000000000000000000000000000110
0000000000000000000000000001001
.
.
1111111111111111111111111111110
1111111111111111111111111111111

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