#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e6+5;
vector< bool > primes(MAXN+5,true);
vector< int > cnt(MAXN+5,0);
void sieve() {
primes[0] = false;
primes[1] = false;
for (int i=2; i*i<=MAXN; i++) {
if (primes[i]) {
for (int j=i*i; j<=MAXN; j+=i) {
primes[j] = false;
}
}
}
}
int main() {
sieve();
for (int i = 2; i<=MAXN; i++) {
cnt[i] += cnt[i-1];
if (primes[i]) {
if (i > 10) {
// check if any digit is zero
string s = to_string(i);
bool z = false;
for (auto& e:s) {
if (e == '0') z = true;
}
if (z) {
continue;
}
int p = i;
// check if all truncations are primes
bool y = 1;
while (p > 10) {
s = to_string(p);
s.erase(s.begin());
p = stoi(s);
y &= primes[p];
}
if (y) {
cnt[i]++;
}
} else {
cnt[i]++;
}
}
}
int t;
cin >> t;
for (int tt = 0; tt<t; tt++) {
int n;
cin >> n;
cout << cnt[n] << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IE1BWE4gPSAxZTYrNTsKCnZlY3RvcjwgYm9vbCA+IHByaW1lcyhNQVhOKzUsdHJ1ZSk7CnZlY3RvcjwgaW50ID4gY250KE1BWE4rNSwwKTsKdm9pZCBzaWV2ZSgpIHsKCXByaW1lc1swXSA9IGZhbHNlOwoJcHJpbWVzWzFdID0gZmFsc2U7Cglmb3IgKGludCBpPTI7IGkqaTw9TUFYTjsgaSsrKSB7CgkJaWYgKHByaW1lc1tpXSkgewoJCQlmb3IgKGludCBqPWkqaTsgajw9TUFYTjsgais9aSkgewoJCQkJcHJpbWVzW2pdID0gZmFsc2U7CgkJCX0KCQl9Cgl9Cn0KCmludCBtYWluKCkgewoJc2lldmUoKTsKCWZvciAoaW50IGkgPSAyOyBpPD1NQVhOOyBpKyspIHsKCQljbnRbaV0gKz0gY250W2ktMV07CgkJaWYgKHByaW1lc1tpXSkgewoJCQlpZiAoaSA+IDEwKSB7CgkJCQkKCQkJCS8vIGNoZWNrIGlmIGFueSBkaWdpdCBpcyB6ZXJvCgkJCQlzdHJpbmcgcyA9IHRvX3N0cmluZyhpKTsKCQkJCWJvb2wgeiA9IGZhbHNlOwoJCQkJZm9yIChhdXRvJiBlOnMpIHsKCQkJCQlpZiAoZSA9PSAnMCcpIHogPSB0cnVlOwoJCQkJfQoJCQkJaWYgKHopIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCQoJCQkJaW50IHAgPSBpOwoJCQkJLy8gY2hlY2sgaWYgYWxsIHRydW5jYXRpb25zIGFyZSBwcmltZXMKCQkJCWJvb2wgeSA9IDE7CgkJCQl3aGlsZSAocCA+IDEwKSB7CgkJCQkJcyA9IHRvX3N0cmluZyhwKTsKCQkJCQlzLmVyYXNlKHMuYmVnaW4oKSk7CgkJCQkJcCA9IHN0b2kocyk7CgkJCQkJeSAmPSBwcmltZXNbcF07CgkJCQl9CgkJCQlpZiAoeSkgewoJCQkJCWNudFtpXSsrOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJY250W2ldKys7CgkJCX0KCQl9Cgl9CgkKCWludCB0OwoJY2luID4+IHQ7Cglmb3IgKGludCB0dCA9IDA7IHR0PHQ7IHR0KyspIHsKCQlpbnQgbjsKCQljaW4gPj4gbjsKCQljb3V0IDw8IGNudFtuXSA8PCAnXG4nOwoJfQoJcmV0dXJuIDA7Cn0K