x?y?n!
题号:NC306381
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}Bingbong 给定一个整数 n,你需要找到两个整数 x,y 满足如下条件:
\hspace{23pt}\bullet\,在满足 \text{gcd}(x,y)=nx\neq y1 \leq x,y< 2^{63} 的基础上,使得 x\oplus y 最小。
\hspace{15pt}可以证明,在上述的条件下,始终存在满足条件的 x,y

【名词解释】
\hspace{15pt}\gcd:指两个或多个整数共有约数中最大的一个。例如,1230 的公约数有 1,2,3,6,其中最大的约数是 6,因此记作 \gcd(12,30)=6。特别地,单个整数的 \gcd 定义为其自身。
\hspace{15pt}\oplus:指位运算中的按位异或(Bitwise XOR),对两个整数的二进制表示按位进行异或运算。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^4\right),代表数据组数,每组测试数据描述如下:
\hspace{15pt}输入一个整数 n\left(1\leq n<2^{31}\right),表示给定的整数。

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出两个整数 x,y,表示你所找到的两个整数。

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

输入

复制
3
2
3
4

输出

复制
4 6
12 15
8 12