#include "bits/stdc++.h" using namespace std; bool isprime(int a){ for (int i = 2; i * i <= a; i++) { if (a%i == 0) return false; } return true; } int main() { int Q; cin >> Q; for (int t = 0; t < Q; t++) { int seed, N, K, B; cin >> seed >> N >> K >> B; N++; vector X(N); X[0] = seed; for (int i = 1; i < N; i++) { X[i] = 1 + (X[i - 1] * X[i - 1] + X[i - 1] * 12345) % 100000009; } int ans = 99999999; for (int p = 2; p <= B; p++) { if (!isprime(p)) continue; if (B % p != 0) continue; int div = 0; int tempB = B; while (B % p == 0){ B /= p; div++; } vector ar(N); for (int i = 0; i < N; i++) { long long temp = X[i]; while (temp % p == 0){ ar[i]++; temp /= p; } } sort(ar.begin(), ar.end()); int mul = 0; for (int i = 0; i < K; i++) { mul += ar[i]; } ans = min(ans, mul / div); } cout << ans << endl; } }