#include using namespace std; const int INF = 1000000; int main(){ int Q; cin >> Q; for (int i = 0; i < Q; i++){ int seed, N, K, B; cin >> seed >> N >> K >> B; vector X(N + 1); X[0] = seed; for (int j = 0; j < N; j++){ X[j + 1] = 1 + ((long long) X[j] * X[j] + (long long) X[j] * 12345) % 100000009; } vector> F; for (int j = 2; j <= B; j++){ if (B % j == 0){ int cnt = 0; while (B % j == 0){ B /= j; cnt++; } F.push_back(make_pair(j, cnt)); } } int cnt = F.size(); int ans = INF; for (int j = 0; j < cnt; j++){ int p = F[j].first; vector Y(N + 1, 0); for (int k = 0; k <= N; k++){ int x = X[k]; while (x % p == 0){ x /= p; Y[k]++; } } sort(Y.begin(), Y.end()); int sum = 0; for (int k = 0; k < K; k++){ sum += Y[k]; } ans = min(ans, sum / F[j].second); } cout << ans << endl; } }