Kruskal
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一张n个点的无向完全图,其中两点之间的路径边权为两点编号的按位与(编号为 (1,2,...,n)),即w\left(u, v \right )=u\&v \left( 1 \le u, v \le n \right),求该图最小生成树的边权和。

输入描述:

本题包含多组数据

第一行包含一个正整数T \left( 1 \le T \le 2 \times 10^5 \right),代表测试用例的组数。

对于每组数据:

第一行输入一个正整数n \left( 2 \le n < 10^{9} \right),代表该完全图的节点个数。

输出描述:

对于每组数据:

输出一行一个整数,代表该完全图最小生成树的边权和。
示例1

输入

复制
1
3

输出

复制
1

说明

对于n=3的完全图,生成树的方式有如下三种:

* 1 \leftrightarrow 2, 1 \leftrightarrow 3,生成树的权值之和为0+1=1

* 1 \leftrightarrow 3, 2 \leftrightarrow 3,生成树的权值之和为1+2=3

* 1 \leftrightarrow 2, 2 \leftrightarrow 3,生成树的权值之和为0+2=2

选择第一种连接方式最优,因此最小生成树的权值之和为1