/*
Name: NYOJ--24--素数距离问题
Author: shen_渊
Date: 17/04/17 16:42
Description: 原来代码看不下去了o(╯□╰)o
*/
#include<iostream>
using namespace std;
int isPrime(int);
int main(){
ios::sync_with_stdio(false);
int T;cin>>T;
while(T--){
int n;cin>>n;
if(n==1)cout<<"2 1"<<endl;
else if(isPrime(n)){
cout<<n<<" 0"<<endl;
}else{
int left_value,right_value = left_value = n;
while(!isPrime(left_value))left_value--;
while(!isPrime(right_value))right_value++;
if((n - left_value) > (right_value - n)) cout<<right_value<<" "<<right_value-n<<endl;
else cout<<left_value<<" "<<n-left_value<<endl;
}
}
return 0;
}
int isPrime(int n) {
for(int j=2 ;j*j<=n ;++j){
if(n%j == 0)return 0;
}
return 1;
}
/*
以前的代码:泪奔
*/
#include<stdio.h>
#include<malloc.h>
#include<math.h>
int main()
{
int *a,N,i,j=0,k,m,*num,d,n,*q;
scanf("%d",&N);n=N;
a=(int *)malloc((N+1)*sizeof(int));
num=(int *)malloc(2*(N+1)*sizeof(int));
q=(int *)malloc(2*(N+1)*sizeof(int));
for(i=0;i<N;i++)scanf("%d",&a[i]);
fflush(stdin);
while(N--){
if(a[j]==0||a[j]==1){
if(a[j]==0){
num[j]=2;
q[j]=2;
j++;
}
else{
num[j]=2;
q[j]=1;
j++;
}
}else{
k=1;
for(i=2;i<=sqrt(a[j])&&k==1;i++)if(a[j]%i==0)k=0;
if(k==1){
num[j]=a[j];
q[j]=0;
j++;
}
if(k==0){
k=1;
m=a[j]-1;
while(k&&m>1){
for(i=2;i<=sqrt(m);i++)if(m%i==0)goto s1;
k=0;
s1: m--;
}
num[j]=m+1;
k=1;m=a[j]+1;
while(k&&m>1){
for(i=2;i<=sqrt(m);i++)if(m%i==0)goto s2;
k=0;
s2: m+=1;
}
m--;
if((a[j]-num[j])!=(m-a[j]))k=(a[j]-num[j])>(m-a[j])?m:num[j];
else k=num[j];
d=(a[j]-num[j])>(m-a[j])?(m-a[j]):(a[j]-num[j]);
q[j]=d;
num[j]=k;
j++;
}
}
}
for(i=0;i<n;i++)printf("%d %d\n",num[i],q[i]);
return 0;
}