小苯的与三角形
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小苯给定了一个正整数 x,他对三角形很感兴趣,因此他想要你构造一个严格小于 x 的正整数 y\left(1 \leqq y < x\right),使得 x, y, x\operatorname{and}y 这三个数字作为三角形的边长,可以构成一个非退化的三角形
\hspace{15pt}但小苯觉得,如果任意构造一个 y,那么问题有些过于简单了,因此他限制你要构造出最小的符合条件的 y

【名词解释】
\hspace{15pt}非退化三角形是指满足三条边长均大于 0 且任意两边之和均大于第三边的三角形。
\hspace{15pt}本题中,\operatorname{and} 用于表示按位与运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节百度百科的相关章节

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^5\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在一行上输入一个整数 x\left(2 \leqq x \leqq 2 \times 10^9\right),表示小苯给定的初始数字。

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。如果无解,直接输出一个 -1;否则,输出一个正整数 y\left(1 \leqq y<x\right),表示你构造的符合条件的最小 y
\hspace{15pt}我们可以证明,如果存在解的话,解是唯一的。
示例1

输入

复制
2
3
2

输出

复制
2
-1

说明

\hspace{15pt}对于第一组测试数据,我们构造:y=2,则 x\operatorname{and}y=2,而 (2,2,3) 三个数字是可以构成非退化三角形的。可以证明,不存在比 y=2 更小的答案。 
\hspace{15pt}对于第二组测试数据,显然无法构造。