#include<bits/stdc++.h>
using namespace std;
#define     int     long long
#define     MOD     1000000007
#define     po      int tc; cin>>tc; while(tc--)
#define     endl    "\n"
 
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
    template <typename Arg1>
    void __f(const char* name, Arg1&& arg1){
        cout << name << " : " << arg1 << endl;
    }
    template <typename Arg1, typename... Args>
    void __f(const char* names, Arg1&& arg1, Args&&... args){
        const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
    }
#else
#define trace(...)
#endif
 
void get_schwifty() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
}

void solve() {
	int n, a, b;
	cin>>n>>a>>b;

	if(a == 1) {
		if((n-1) % b == 0) {
			cout<<"Yes";
		} else {
			cout<<"No";
		}
		cout<<endl;
		return;
	}

	vector<int> s;
	int num = 1;
	while(num <= n) {
		s.push_back(num);
		num *= a;
	}

	while(true) {
		// while(n > 1 and n % a != 0) {
		// 	n -= b;
		// }

		bool flag = false;

		for(int i=0; i<(int)(s.size()); i++) {
			if((n - s[i]) % b == 0) {
				flag = true;
				n = s[i];
				break;
			}
		}

		if(!flag) {
			cout<<"No"<<endl;
			return;
		}

		if(n == 1) {
			cout<<"Yes"<<endl;
			return;
		} else if(n < 1) {
			cout<<"No"<<endl;
			return;
		}

		while(n > 1 and n % a == 0) {
			n /= a;
		}
		if(n == 1) {
			cout<<"Yes"<<endl;
			return;
		}
	}
}

int32_t main()
{ 
    get_schwifty();
    
    po {
    	solve();
    }
    
    return 0;
}