#CF1988C. Increasing Sequence with Fixed OR

Increasing Sequence with Fixed OR

CF1988C Increasing Sequence with Fixed OR

题目描述

给定一个正整数 nn。请找出满足以下条件的最长正整数序列 a=[a1,a2,,ak]a=[a_1,a_2,\ldots,a_k],并输出该序列:

  • 对于所有 1ik1\le i\le k,都有 aina_i\le n
  • 序列 aa 严格递增。即对于所有 2ik2\le i\le k,都有 ai>ai1a_i>a_{i-1}
  • 对于所有 2ik2\le i\le k,都有 aiai1=na_i\,|\,a_{i-1}=n,其中 | 表示按位或运算

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试数据的组数。

每组测试数据仅包含一行,一个整数 nn1n10181\le n\le 10^{18})。

保证所有测试数据中最长合法序列的长度之和不超过 51055\cdot 10^5

输出格式

对于每组测试数据,输出两行。第一行输出你构造的序列的长度 kk。第二行输出 kk 个正整数,表示该序列。若存在多个最长序列,你可以输出其中任意一个。

输入输出样例 #1

输入 #1

4
1
3
14
23

输出 #1

1
1
3
1 2 3
4
4 10 12 14
5
7 18 21 22 23

说明/提示

由 ChatGPT 4.1 翻译