全息城墙
题号:NC293315
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}T国有一堵神奇的全息城墙,其中有 n 个能量节点 a_1, a_2, \dots, a_n。整堵城墙的防御力等于所有能量节点能量的和,即 a_1 + a_2 + \dots + a_n
\hspace{15pt}你作为K国的精英,获得了一个精密仪器,该仪器进行一次操作的过程如下:
\hspace{23pt}\bullet\,选择两个不同的节点 x, y(满足 1 \leq x, y \leq n 且 x \neq y);
\hspace{23pt}\bullet\,同时将 a_x 更新为 (a_x \operatorname{or} a_y)a_y 更新为 (a_x \operatorname{xor} a_y)
\hspace{15pt}你需要在不超过 10 \times n 次操作内(可以不操作),使得城墙防御力最小。请输出其中一种具体的操作过程。

【名词解释】
\hspace{15pt}\operatorname{or} 表示按位或运算,\operatorname{xor} 表示按位异或运算。

本题纯净版 Markdown 提供如下。
# H.全息城墙

## 题目描述

$\hspace{15pt}$T国有一堵神奇的全息城墙,其中有 $n$ 个能量节点 $a_1, a_2, \dots, a_n$。整堵城墙的防御力等于所有能量节点能量的和,即 $a_1 + a_2 + \dots + a_n$。  
$\hspace{15pt}$你作为K国的精英,获得了一个精密仪器,该仪器进行一次操作的过程如下:  
$\hspace{23pt}\bullet\,$选择两个不同的节点 $x, y$(满足 $1 \leq x, y \leq n$ 且 $x \neq y$);  
$\hspace{23pt}\bullet\,$同时将 $a_x$ 更新为 $(a_x \operatorname{or} a_y)$、$a_y$ 更新为 $(a_x \operatorname{xor} a_y)$。  
$\hspace{15pt}$你需要在不超过 $10 \times n$ 次操作内(可以不操作),使得城墙防御力最小。请输出其中一种具体的操作过程。

【名词解释】
$\hspace{15pt}$$\operatorname{or}$ 表示按位或运算,$\operatorname{xor}$ 表示按位异或运算。

## 输入描述

$\hspace{15pt}$第一行输入一个整数 $n \left(2 \leq n \leq 2 \times 10^5\right)$,表示能量节点的个数。  
$\hspace{15pt}$第二行输入 $n$ 个整数 $a_1, a_2, \dots, a_n \left(1 \leq a_i \leq 10^9\right)$,表示各节点的初始能量。

## 输出描述

$\hspace{15pt}$第一行输出两个整数 $m, p \left(0 \leq m \leq 10 \times n\right)$,表示操作次数及操作后的最小防御力。  
$\hspace{15pt}$此后 $m$ 行,第 $i$ 行输出两个整数 $x_i, y_i \left(1 \leq x_i, y_i \leq n\right)$,表示第 $i$ 次操作选择的两个能量节点。  

$\hspace{15pt}$如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。

## 样例

~~~text input:#1
2
2 3
~~~

~~~text output:#1
1 4
1 2
~~~

$\hspace{15pt}$操作后,$a_1' = (2 \operatorname{or} 3) = 3$、$a_2' = (2 \operatorname{xor} 3) = 1$。我们可以证明,这是能够得到的最小的城墙防御力。

~~~text input:#2
2
27 11
~~~

~~~text output:#2
0 38
~~~

输入描述:

\hspace{15pt}第一行输入一个整数 n \left(2 \leq n \leq 2 \times 10^5\right),表示能量节点的个数。 
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(1 \leq a_i \leq 10^9\right),表示各节点的初始能量。

输出描述:

\hspace{15pt}第一行输出两个整数 m, p \left(0 \leq m \leq 10 \times n\right),表示操作次数及操作后的最小防御力。 
\hspace{15pt}此后 m 行,第 i 行输出两个整数 x_i, y_i \left(1 \leq x_i, y_i \leq n\right),表示第 i 次操作选择的两个能量节点。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
2 3

输出

复制
1 4
1 2

说明

\hspace{15pt}操作后,a_1' = (2 \operatorname{or} 3) = 3a_2' = (2 \operatorname{xor} 3) = 1。我们可以证明,这是能够得到的最小的城墙防御力。
示例2

输入

复制
2
27 11

输出

复制
0 38