#include <bits/stdc++.h>
using namespace std;
#define rep(i, from, to) for (int i = from; i < (to); ++i)
#define trav(a, x) for (auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair< int , int > pii;
typedef vector< int > vi;
typedef unsigned long long ull;
const int bits = 10 ;
// if all numbers are less than 2^k, set bits = 64-k
const ull po = 1 << bits;
ull mod_mul( ull a, ull b, ull & c) {
ull x = a * ( b & ( po - 1 ) ) % c;
while ( ( b >>= bits) > 0 ) {
a = ( a << bits) % c;
x + = ( a * ( b & ( po - 1 ) ) ) % c;
}
return x % c;
}
ull mod_pow( ull a, ull b, ull mod) {
if ( b == 0 ) return 1 ;
ull res = mod_pow( a, b / 2 , mod) ;
res = mod_mul( res, res, mod) ;
if ( b & 1 ) return mod_mul( res, a, mod) ;
return res;
}
bool prime( ull p) {
if ( p == 2 ) return true ;
if ( p == 1 || p % 2 == 0 ) return false ;
ull s = p - 1 ;
while ( s % 2 == 0 ) s / = 2 ;
rep( i,0 ,15 ) {
ull a = rand ( ) % ( p - 1 ) + 1 , tmp = s;
ull mod = mod_pow( a, tmp, p) ;
while ( tmp ! = p - 1 && mod ! = 1 && mod ! = p - 1 ) {
mod = mod_mul( mod, mod, p) ;
tmp * = 2 ;
}
if ( mod ! = p - 1 && tmp % 2 == 0 ) return false ;
}
return true ;
}
const int N = 2e7 ;
const int N2 = 7 ;
bool isPrime[ N] ;
vector< int > primes;
int smallPrimes[ N2] ;
void pre( ) {
fill( isPrime, isPrime+ N, true ) ;
isPrime[ 0 ] = isPrime[ 1 ] = false ;
for ( int i = 2 ; i < N; i++ ) {
if ( isPrime[ i] ) {
primes.push_back ( i) ;
for ( int j = 2 * i; j < N; j + = i) {
isPrime[ j] = false ;
}
}
}
for ( int i = 0 ; i < N2; i++ ) {
smallPrimes[ i] = primes[ i] ;
}
}
bool is_prime( int n) {
if ( n < N) {
return isPrime[ n] ;
}
return prime( n) ;
/*
for(int i : primes) {
if(i*i > n) {
return true;
}
if(n%i == 0) {
return false;
}
}
*/
}
bool is_prime2( int n) {
for ( int i : smallPrimes) {
if ( n% i == 0 ) {
return false ;
}
}
return true ;
}
bool isPop( int x) {
string a = to_string( x) ;
int n = a.length ( ) ;
if ( ! is_prime( x) ) {
return false ;
}
vector< int > dp( n) ;
for ( int j = 0 ; j < n- 1 ; j++ ) {
for ( int k = j; k >= 0 ; k-- ) {
if ( a[ k] == '0' || a[ j+ 1 ] == '0' ) {
continue ;
}
int i1 = stoi( a.substr ( k, j+ 1 ) ) ;
if ( ! is_prime2( i1) ) {
continue ;
}
bool b11 = is_prime( i1) ;
if ( ! b11) {
continue ;
}
if ( k >= 1 ) {
dp[ j] + = dp[ k- 1 ] ;
} else {
dp[ j] ++ ;
}
int i2 = stoi( a.substr ( j+ 1 , n) ) ;
if ( ! is_prime2( i2) ) {
continue ;
}
bool b22 = is_prime( i2) ;
if ( b22) {
if ( k >= 1 ) {
if ( dp[ k- 1 ] > 0 ) {
return true ;
}
} else {
return true ;
}
}
}
}
return false ;
}
int main( ) {
pre( ) ;
int t;
scanf ( "%d" , & t) ;
map< int , int > mp;
while ( t-- ) {
int n;
scanf ( "%d" , & n) ;
vector< int > v;
while ( true ) {
if ( mp.count ( n) > 0 ) {
printf ( "%d\n " , mp[ n] ) ;
break ;
}
v.push_back ( n) ;
if ( is_prime2( n) && isPop( n) ) {
printf ( "%d\n " , n) ;
break ;
}
n++ ;
}
for ( int i : v) {
mp[ i] = n;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHJlcChpLCBmcm9tLCB0bykgZm9yIChpbnQgaSA9IGZyb207IGkgPCAodG8pOyArK2kpCiNkZWZpbmUgdHJhdihhLCB4KSBmb3IgKGF1dG8mIGEgOiB4KQojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBzeih4KSAoaW50KSh4KS5zaXplKCkKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwpjb25zdCBpbnQgYml0cyA9IDEwOwovLyBpZiBhbGwgbnVtYmVycyBhcmUgbGVzcyB0aGFuIDJeaywgc2V0IGJpdHMgPSA2NC1rCmNvbnN0IHVsbCBwbyA9IDEgPDwgYml0czsKCnVsbCBtb2RfbXVsKHVsbCBhLCB1bGwgYiwgdWxsICZjKSB7Cgl1bGwgeCA9IGEgKiAoYiAmIChwbyAtIDEpKSAlIGM7Cgl3aGlsZSAoKGIgPj49IGJpdHMpID4gMCkgewoJCWEgPSAoYSA8PCBiaXRzKSAlIGM7CgkJeCArPSAoYSAqIChiICYgKHBvIC0gMSkpKSAlIGM7Cgl9CglyZXR1cm4geCAlIGM7Cn0KCnVsbCBtb2RfcG93KHVsbCBhLCB1bGwgYiwgdWxsIG1vZCkgewoJaWYgKGIgPT0gMCkgcmV0dXJuIDE7Cgl1bGwgcmVzID0gbW9kX3BvdyhhLCBiIC8gMiwgbW9kKTsKCXJlcyA9IG1vZF9tdWwocmVzLCByZXMsIG1vZCk7CglpZiAoYiAmIDEpIHJldHVybiBtb2RfbXVsKHJlcywgYSwgbW9kKTsKCXJldHVybiByZXM7Cn0KCmJvb2wgcHJpbWUodWxsIHApIHsKCWlmIChwID09IDIpIHJldHVybiB0cnVlOwoJaWYgKHAgPT0gMSB8fCBwICUgMiA9PSAwKSByZXR1cm4gZmFsc2U7Cgl1bGwgcyA9IHAgLSAxOwoJd2hpbGUgKHMgJSAyID09IDApIHMgLz0gMjsKCXJlcChpLDAsMTUpIHsKCQl1bGwgYSA9IHJhbmQoKSAlIChwIC0gMSkgKyAxLCB0bXAgPSBzOwoJCXVsbCBtb2QgPSBtb2RfcG93KGEsIHRtcCwgcCk7CgkJd2hpbGUgKHRtcCAhPSBwIC0gMSAmJiBtb2QgIT0gMSAmJiBtb2QgIT0gcCAtIDEpIHsKCQkJbW9kID0gbW9kX211bChtb2QsIG1vZCwgcCk7CgkJCXRtcCAqPSAyOwoJCX0KCQlpZiAobW9kICE9IHAgLSAxICYmIHRtcCAlIDIgPT0gMCkgcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCmNvbnN0IGludCBOID0gMmU3Owpjb25zdCBpbnQgTjIgPSA3Owpib29sIGlzUHJpbWVbTl07CnZlY3RvcjxpbnQ+IHByaW1lczsKaW50IHNtYWxsUHJpbWVzW04yXTsKCnZvaWQgcHJlKCkgewoJZmlsbChpc1ByaW1lLCBpc1ByaW1lK04sIHRydWUpOwoJaXNQcmltZVswXSA9IGlzUHJpbWVbMV0gPSBmYWxzZTsKCWZvcihpbnQgaSA9IDI7IGkgPCBOOyBpKyspIHsKCQlpZihpc1ByaW1lW2ldKSB7CgkJCXByaW1lcy5wdXNoX2JhY2soaSk7CgkJCWZvcihpbnQgaiA9IDIqaTsgaiA8IE47IGogKz0gaSkgewoJCQkJaXNQcmltZVtqXSA9IGZhbHNlOwoJCQl9CgkJfQoJfQoJZm9yKGludCBpID0gMDsgaSA8IE4yOyBpKyspIHsKCQlzbWFsbFByaW1lc1tpXSA9IHByaW1lc1tpXTsKCX0KfQoKYm9vbCBpc19wcmltZShpbnQgbikgewoJaWYobiA8IE4pIHsKCQlyZXR1cm4gaXNQcmltZVtuXTsKCX0KCXJldHVybiBwcmltZShuKTsKCS8qCglmb3IoaW50IGkgOiBwcmltZXMpIHsKCQlpZihpKmkgPiBuKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlpZihuJWkgPT0gMCkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJKi8KfQoKYm9vbCBpc19wcmltZTIoaW50IG4pIHsKCWZvcihpbnQgaSA6IHNtYWxsUHJpbWVzKSB7CgkJaWYobiVpID09IDApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCXJldHVybiB0cnVlOwp9Cgpib29sIGlzUG9wKGludCB4KSB7CglzdHJpbmcgYSA9IHRvX3N0cmluZyh4KTsKCWludCBuID0gYS5sZW5ndGgoKTsKCWlmKCFpc19wcmltZSh4KSkgewoJCXJldHVybiBmYWxzZTsKCX0KCXZlY3RvcjxpbnQ+IGRwKG4pOwoJZm9yKGludCBqID0gMDsgaiA8IG4tMTsgaisrKSB7CgkJZm9yKGludCBrID0gajsgayA+PSAwOyBrLS0pIHsKCQkJaWYoYVtrXSA9PSAnMCcgfHwgYVtqKzFdID09ICcwJykgewoJCQkJY29udGludWU7CgkJCX0KCQkJaW50IGkxID0gc3RvaShhLnN1YnN0cihrLCBqKzEpKTsKCQkJaWYoIWlzX3ByaW1lMihpMSkpIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCWJvb2wgYjExID0gaXNfcHJpbWUoaTEpOwoJCQlpZighYjExKSB7CgkJCQljb250aW51ZTsKCQkJfQoJCQlpZihrID49IDEpIHsKCQkJCWRwW2pdICs9IGRwW2stMV07CgkJCX0gZWxzZSB7CgkJCQlkcFtqXSsrOwoJCQl9CgkJCWludCBpMiA9IHN0b2koYS5zdWJzdHIoaisxLCBuKSk7CgkJCWlmKCFpc19wcmltZTIoaTIpKSB7CgkJCQljb250aW51ZTsKCQkJfQoJCQlib29sIGIyMiA9IGlzX3ByaW1lKGkyKTsKCQkJaWYoYjIyKSB7CgkJCQlpZihrID49IDEpIHsKCQkJCQlpZihkcFtrLTFdID4gMCkgewoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfQoJfQoJcmV0dXJuIGZhbHNlOwp9CiAKaW50IG1haW4oKSB7CglwcmUoKTsKCWludCB0OwoJc2NhbmYoIiVkIiwgJnQpOwoJbWFwPGludCwgaW50PiBtcDsKCXdoaWxlKHQtLSkgewoJCWludCBuOwoJCXNjYW5mKCIlZCIsICZuKTsKCQl2ZWN0b3I8aW50PiB2OwoJCXdoaWxlKHRydWUpIHsKCQkJaWYobXAuY291bnQobikgPiAwKSB7CgkJCQlwcmludGYoIiVkXG4iLCBtcFtuXSk7CgkJCQlicmVhazsKCQkJfQoJCQl2LnB1c2hfYmFjayhuKTsKCQkJaWYoaXNfcHJpbWUyKG4pICYmIGlzUG9wKG4pKSB7CgkJCQlwcmludGYoIiVkXG4iLCBuKTsKCQkJCWJyZWFrOwoJCQl9CgkJCW4rKzsKCQl9CgkJZm9yKGludCBpIDogdikgewoJCQltcFtpXSA9IG47CgkJfQoJfQp9