#include<bits/stdc++.h> using namespace std;

struct s{ int cnt; int lpl; };

int T; long long n[100005],k[100005]; long long num[37];

vector<queue>op; int main() { cin>>T; for(int i = 1;i<=T;i++) cin>>n[i]>>k[i];

num[1] = 1;

for(int i = 2;i<37;i++)
	num[i] = num[i-1]*3;

for(int i = 1;i<=T;i++)
{
	queue<s>q;
	op.push_back(q);
	s test,start;
	start.cnt = 0;
	start.lpl = 0;
	op[op.size()-1].push(start);
	bool ui = false;
	while(!op[op.size()-1].empty())
	{
		test = op[op.size()-1].front();
		op[op.size()-1].pop();
		if(test.cnt>n[i]||test.lpl>k[i])
			continue;
		else if(test.cnt==n[i]&&test.lpl==k[i])
		{
			ui = true;
			break;
		}
		for(int j = 1;j<37;j++)
		{
			s tmp = test;
			tmp.cnt += num[j];
			tmp.lpl += 1;
			if(tmp.cnt>n[i])
				break;
			else if(tmp.lpl>k[i])
				break;
			else op[op.size()-1].push(tmp);	
		}	
	}
	if(ui) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;

}
return 0;

}

0 条评论

目前还没有评论...