CF1689E ANDfinity

题目描述

从计算机科学系毕业后, Vlad 被奖与一个由 $n$ 个非负整数组成的数组 $a_1,a_2, \dots , a_n$。他很自然地想到构建一个有 $n$ 个点,编号为 $1,2,\dots,n$ 的图。点 $i$ 和 $j$ 之间有边当且仅当 $a_i\& a_j >0$,其中 $\&$ 表示按位与。 Vlad 希望这张图连通,虽然最初可能不是这样。为了使图连通,他可以对这个数组做下列两种操作: 1. 选择一个元素 $a_i$ 并将它加一。 2. 选择一个元素 $a_i$ 并将它减一(仅能在 $a_i>0$ 时做此操作)。 可以证明存在一个有穷的操作序列使得这张图连通。所以,你能帮 Vlad 找到最少的可能操作数以达成这个目标并给出操作方法吗?

输入格式

输入多组数据。 第一行一个整数 $t$ $(1 \le t \le 1000)$ 表示数据组数。 对于每组数据,第一行一个整数 $n$ $(2 \le n \le 2000)$。 第二行包含 $n$ 个整数 $a_1 , a_2 , \dots ,a_n$ $(0 \le a_i < 2^{30} )$表示给出的数组 $a$ 中各个元素。 保证所有数据中 $n$ 之和不超过 2000。

输出格式

对于每组数据,第一行输出一个整数 $m$ 表示最少操作数。 第二行输出经过一系列有效操作后使得对应的图连通的数组。 如果存在多种解,输出任意一个。

说明/提示

In the first test case, the graph is already connected. In the second test case, we can increment $ 0 $ twice and end up with the array $ [2,2] $ . Since $ 2 \& 2 = 2 > 0 $ , the graph is connected. It can be shown that one operation is not enough. In the third test case, we can decrement $ 12 $ once and we end up with an array $ [3,11] $ . $ 3 \& 11 = 3 > 0 $ hence the graph is connected. One operation has to be done since the graph is not connected at the beginning.