//本地自测用例通过,但是超时了,待优化
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int n = Integer.parseInt(str);
long[] a = new long[n];
long[] b = new long[n];
long[] c = new long[n];
for (int i =0;i<n;i++){
a[i] = Long.parseLong(br.readLine());
b[i] = fn(a[i]);
}
for (int i=0;i<n;i++){
long j=0;
while(j<=i) {
if (fn(j) == b[i]) {
c[i] = j;
break;
}
j++;
}
}
for (int i=0;i<n;i++){
System.out.println(b[i]+" "+c[i]);
}
}
public static long fn(long n){
if (n==0){
return 0;
}
else if (n==1){
return 1;
}
else{
return fn(n/2)+fn(n%2);
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int n = Integer.parseInt(str);
long[] a = new long[n];
long[] b = new long[n];
long[] c = new long[n];
for (int i =0;i<n;i++){
a[i] = Long.parseLong(br.readLine());
b[i] = fn(a[i]);
}
for (int i=0;i<n;i++){
long j=0;
while(j<=i) {
if (fn(j) == b[i]) {
c[i] = j;
break;
}
j++;
}
}
for (int i=0;i<n;i++){
System.out.println(b[i]+" "+c[i]);
}
}
public static long fn(long n){
if (n==0){
return 0;
}
else if (n==1){
return 1;
}
else{
return fn(n/2)+fn(n%2);
}
}
}