#abc269c. [abc269_c]Submask

[abc269_c]Submask

题目描述

给定一个非负整数NN。按升序打印满足以下条件的非负整数xx

  • 二进制表示中包含11的位置的集合是二进制表示中包含11的位置在NN中的子集。
    • 换句话说,对于每个非负整数kk,如果xx的"2k2^k位"上的数字是11,则NN2k2^k位上的数字也是11

约束条件

  • NN是一个整数。
  • 0N<2600 \le N < 2^{60}
  • NN的二进制表示中,最多包含1515个位置为11的数字。

输入

从标准输入读入数据,数据格式如下:

NN

输出

按升序打印答案,每个答案占一行。

示例输入 1

11

示例输出 1

0
1
2
3
8
9
10
11

N=11(10)N = 11_{(10)}的二进制表示是1011(2)1011_{(2)}
满足条件的非负整数xx有:

  • 0000(2)=0(10)0000_{(2)}=0_{(10)}
  • 0001(2)=1(10)0001_{(2)}=1_{(10)}
  • 0010(2)=2(10)0010_{(2)}=2_{(10)}
  • 0011(2)=3(10)0011_{(2)}=3_{(10)}
  • 1000(2)=8(10)1000_{(2)}=8_{(10)}
  • 1001(2)=9(10)1001_{(2)}=9_{(10)}
  • 1010(2)=10(10)1010_{(2)}=10_{(10)}
  • 1011(2)=11(10)1011_{(2)}=11_{(10)}

示例输入 2

0

示例输出 2

0

示例输入 3

576461302059761664

示例输出 3

0
524288
549755813888
549756338176
576460752303423488
576460752303947776
576461302059237376
576461302059761664

输入的数可能不能用32位有符号整数表示。