#include using namespace std; int main(){ long long N, M; int L, K; long long B; cin >> N >> M >> L >> K >> B; auto convolution = [&](vector a, vector b){ vector c(L, 0); for (int i = 0; i < L; i++){ for (int j = 0; j < L; j++){ c[(i + j) % L] += a[i] * b[j]; c[(i + j) % L] %= B; } } return c; }; vector f(L, 0); f[0] += 1; f[0] %= B; f[1 % L] += M; f[1 % L] %= B; vector g(L, 0); g[0] = 1; while (N > 0){ if (N % 2 == 1){ g = convolution(g, f); } f = convolution(f, f); N /= 2; } cout << g[K] << endl; }