#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define BET(a,b,c) ((a)<=(b)&&(b)<(c)) #define FOR(i,n) for(int i=0,i##_end=(int(n));i VI; typedef vector VVI; int countFactor(int x, int f){ int cnt = 0; while(x % f == 0){ x /= f; cnt++; } return cnt; } int main() { int q; cin>>q; FOR(_,q){ int seed, N, K, B; scanf("%d%d%d%d",&seed,&N,&K,&B); vector X(N+1); X[0] = seed; for(int i=1;i<=N;i++){ X[i] = 1 + (X[i-1]*X[i-1]+X[i-1]*12345) % 100000009 ; } vector > factors; for(int i=2;i<=36;i++){ if(B % i == 0){ int cnt = 0 ; while(B % i == 0){ B /= i; cnt++; } factors.push_back(MP(i, cnt)); } } int ans = 1<<28; for(auto p : factors){ VI a; FOR(i,N+1) { a.push_back(countFactor(X[i], p.first)); } sort(ALL(a)); int sum = 0; FOR(i,K) sum += a[i]; ans = min(ans, sum / p.second); } cout<