func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int read() {     char ch = getchar();     int x = 0, f = 1;     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = -1;       ch = getchar();     }     while ( 0  <= ch && ch <=  9 ) {       x = x * 10 + ch -  0 ;       ch = getchar();     }     return x * f;   }   int fac[2000010], inv[2000010], f[2000010];   inline int Power(int x, int y, int Q) {     int ret = 1;     while (y) {       if (y & 1) ret = 1ll * ret * x % Q;       x = (1ll * x * x) % Q;       y >>= 1;     }     return ret;   }   int main() {     int n = read(), m = read(), a = read(), Q = read();     int p = 1;     for (int i = a; i != 1; i = (1ll * i * a % Q), p++)       ;     fac[1] = 1;     for (int i = (2); i <= (max(n, m)); i++) fac[i] = 1ll * fac[i - 1] * i % p;     inv[0] = inv[1] = 1;     for (int i = (2); i <= (max(n, m)); i++)       inv[i] = 1ll * (p - p / i) * inv[p % i] % p;     for (int i = (2); i <= (max(n, m)); i++)       inv[i] = 1ll * inv[i - 1] * inv[i] % p;     f[0] = 1;     for (int i = (1); i <= (m); i++) {       f[i] = (f[i - 1] + (1ll * fac[m] * inv[m - i] % p * inv[i] % p)) % p;     }     for (int i = (m + 1); i <= (n); i++) f[i] = f[i - 1];     for (int i = n; i >= 1; i--) printf( %d  , Power(a, f[i - 1], Q));     return 0;   }   