#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;
}