#include #include #include #include std::vector> prime_factorize(int n) { std::vector> res; std::vector primes = {2, 3, 5, 7}; for (int p : primes) { int e = 0; while (n % p == 0) { n /= p; e++; } if (e > 0) { res.emplace_back(p, e); } } if (n > 1) { res.emplace_back(n, 1); } return res; } void solve() { using namespace std; constexpr long long MOD = 100000009; long long seed; int n, k, base; cin >> seed >> n >> k >> base; vector x(n + 1, seed); for (int i = 0; i < n; i++) { x[i + 1] = (x[i] * (x[i] + 12345) % MOD) + 1; } auto primes = prime_factorize(base); int ans = n * 100; for (auto [p, e] : primes) { vector count; for (auto xi : x) { int c = 0; while (xi % p == 0) { xi /= p; c++; } count.push_back(c); } sort(count.begin(), count.end()); int mul_cnt = 0; for (int i = 0; i < k; i++) { mul_cnt += count[i]; } ans = min(ans, mul_cnt / e); } cout << ans << "\n"; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int q; std::cin >> q; while (q--) { solve(); } }