http://poj.org/problem?id=2309
//找规律 可以看到每个根节点都可以将其在同一层的最左边的根节点整除,并且最大值为该节点加上最左边的节点值-1,最小值为////为该节点减去最左边的节点值-1
#include <iostream>
#include<cmath>
using namespace std; int main()
{
long long s[];
s[] =;
for(int i=;i<=;i++)
s[i] = s[i-]<<;
int t,n;
cin>>t;
while(t--){
cin>>n;
if(n%){
cout<<n<<" "<<n<<endl;
continue;
}
int j;
for(j=;j>=;j--)
if(n%s[j]==)
break;
int bet = s[j]-;
cout<<n-bet<<" "<<n+bet<<endl; }
return ;
}