#include <iostream>
#include <vector>
using namespace std;
vector<int> sosu;
bool isPrime[1000002];
void check(int num){
int sum = num + num;
while(sum <= 1000000){
isPrime[sum] = false;
sum += num;
}
}
int main() {
fill_n(isPrime,1000002,1);
for(int i = 2; i <= 1000000; i++){
if(!isPrime[i]) continue;
sosu.push_back(i);
check(i);
// printf("%d ",i);
}
int T;
scanf("%d",&T);
for(int t = 0; t < T; t++){
int n;
scanf("%d",&n);
int cnt = 0;
for(int a = 2; a <= n/2; a++){
int b = n - a;
if(isPrime[a] && isPrime[b]){
cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gc29zdTsKYm9vbCBpc1ByaW1lWzEwMDAwMDJdOwoKdm9pZCBjaGVjayhpbnQgbnVtKXsKCWludCBzdW0gPSBudW0gKyBudW07Cgl3aGlsZShzdW0gPD0gMTAwMDAwMCl7CgkJaXNQcmltZVtzdW1dID0gZmFsc2U7CgkJc3VtICs9IG51bTsKCX0KfQoKaW50IG1haW4oKSB7CgkKCWZpbGxfbihpc1ByaW1lLDEwMDAwMDIsMSk7CgkKCWZvcihpbnQgaSA9IDI7IGkgPD0gMTAwMDAwMDsgaSsrKXsKCQlpZighaXNQcmltZVtpXSkgY29udGludWU7CgkJc29zdS5wdXNoX2JhY2soaSk7CgkJY2hlY2soaSk7CgkvLwlwcmludGYoIiVkICIsaSk7Cgl9CgkKCWludCBUOwoJCglzY2FuZigiJWQiLCZUKTsKCQoJZm9yKGludCB0ID0gMDsgdCA8IFQ7IHQrKyl7CgkJaW50IG47CgkJc2NhbmYoIiVkIiwmbik7CgkJaW50IGNudCA9IDA7CgkJCgkJZm9yKGludCBhID0gMjsgYSA8PSBuLzI7IGErKyl7CgkJCWludCBiID0gbiAtIGE7CgkJCWlmKGlzUHJpbWVbYV0gJiYgaXNQcmltZVtiXSl7CgkJCQljbnQrKzsKCQkJfQoJCX0KCQlwcmludGYoIiVkXG4iLGNudCk7CgkJCgkJCgl9CgkKCQoJCglyZXR1cm4gMDsKfQ==