#P33. [KBC001Ex] Distance

[KBC001Ex] Distance

版权声明

本题版权归 Long Long OJ 所有。

题目描述

给你 nn 个数轴上的点 x1xnx_1\sim x_n,问最多可以选出多少个点,使得它们之间两两之间的距离2k2^kkk 为非负整数)。

换句话说,你需要选择尽可能多的点 xi1,xi2,,xim x_{i_1}, x_{i_2}, \dots, x_{i_m} ,使得对于每一对点 xij x_{i_j} xik x_{i_k} ,都满足 xijxik=2d |x_{i_j} - x_{i_k}| = 2^d ,其中 d d 是非负整数(不一定对于每一对点都相同)。

输入格式

第一行包含一个整数 n n 1n2105 1 \le n \le 2 \cdot 10^5 )—— 点的数量。

第二行包含 n n 个两两不同的整数 x1,x2,,xn x_1, x_2, \dots, x_n 109xi109 -10^9 \le x_i \le 10^9 )—— 点的坐标。

输出格式

第一行输出 m m —— 所选子集满足上述条件的最大可能点数。

第二行输出 m m 个整数 —— 你选择的子集中点的坐标。

如果存在多个答案,输出其中任意一个。

样例

6
3 5 4 7 10 12
3
7 3 5
5
-1 2 5 8 11
1
8

提示

在第一个样例中,答案是 [7,3,5] [7, 3, 5] 。请注意,73=4=22 |7-3|=4=2^2 75=2=21 |7-5|=2=2^1 以及 35=2=21 |3-5|=2=2^1

[4,3,5] [4, 3, 5] 也是一个合法的答案。然而,你无法找到更多满足要求的点构成的子集。