#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(i=a;i<b;++i)
#define repi(i,a,b) for(int i=a;i<b;++i)
#define F first
#define S second
#define mp(a,b) make_pair(a,b)
#define pii pair<int,int>
#define ppi pair<pii,int>
#define ppp pair<pii,pii>
#define vi vector<int>
#define sc(a) scanf("%d",&a)
#define pb(a) push_back(a)
#define pr(a) printf("%d",a)
#define prn(a) printf("%d\n",a)
#define scll(a) scanf("%lld",&a)
#define prll(a) printf("%lld",a)
#define prlln(a) printf("%lld\n",a)
typedef long long LL;
bool comp[10001];
set<int> primes;
void pre() {
comp[1] = 1;
primes.insert(2);
for(int i =2;i<=10001;++i) {
if(comp[i]) continue;
primes.insert(i);
for(int j = i*i; j <= 10001; j+=i) comp[j] = true;
}
}
bool happy[10000];
bool ex[10000];
bool geh(int x) {
//cout<<x<<" "<<endl;
if(ex[x] && happy[x]) return true;
if(ex[x] && !happy[x]) return false;
int y = 0;
int z = x;
while(z>0) {
y += (z%10)*(z%10);
z/=10;
}
ex[x] = true;
return happy[x] = geh(y);
}
int main() {
// your code goes here
pre();
int p;
sc(p);
happy[1] = true;
ex[1] = true;
while(p--) {
int k;
sc(k);
int pr;
sc(pr);
if(comp[pr]) {
cout<<k<<" "<<pr<<" NO"<<endl;
} else {
cout<<k<<" "<<pr<<" "<<(geh(pr)?"YES":"NO")<<endl;
}
}
return 0;
}