#include using namespace std; using ll = long long; constexpr int mod = 1e8 + 9; int solve(void) { int seed, N, K, B; cin >> 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] % mod + X[i - 1] * 12345 % mod) % mod; auto solve = [&](int p) ->int { vector Y(N + 1, 0); for(int i = 0; i <= N; ++i) while(X[i] % p == 0) X[i] /= p, ++Y[i]; sort(Y.begin(), Y.end()); int res = 0; for(int i = 0; i < K; ++i) res += Y[i]; return res; }; int ans = 1e9; for(int i = 2; i <= B; ++i) { int cnt = 0; while(B % i == 0) B /= i, ++cnt; if(cnt) ans = min(ans, solve(i) / cnt); } cout << ans << endl; return 0; } int main(void) { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int Q; cin >> Q; while(Q--) solve(); return 0; }