func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1000005;   const int inf = 1e9 + 7;   long long fac[N], M, inv[N];   inline long long po(long long x, long long y, long long z) {     long long res = 1;     while (y) {       if (y & 1) res = res * x % z;       x = x * x % z;       y >>= 1;     }     return res;   }   long long ans[N], M2;   inline long long C(int x, int y) {     return fac[x] * inv[y] % M2 * inv[x - y] % M2;   }   int main() {     int n, m, a;     scanf( %d%d%d%lld , &n, &m, &a, &M);     long long res = 1;     for (int i = (1); i <= (2000000); i++) {       res = res * (long long)a % M;       if (res == 1) {         M2 = i;         break;       }     }     fac[0] = fac[1] = inv[0] = inv[1] = 1;     for (int i = (2); i <= (M2); i++) {       fac[i] = fac[i - 1] * (long long)i % M2;       inv[i] = po(fac[i], M2 - 2, M2);     }     ans[0] = 1;     for (int i = (1); i <= (N - 1); i++) {       ans[i] = ans[i - 1];       ans[i] += C(m, i);     }     for (int i = (n - 1); i >= (0); i--) printf( %lld  , po(a, ans[i], M));     puts(  );     return 0;   }   