def polymul(f,g): lg = len(g) h = [0]*(len(f)+lg-1) for i,v in enumerate(f): for j in range(lg): h[i+j] += v*g[j] h[i+j] %= MOD for i in range(L,len(h))[::-1]: h[i-L] += h[i]*M h[i-L] %= MOD return h[:L] """ (1+x)^n mod (x^n-M) """ n,M,L,k,MOD = map(int,input().split()) ans = [1]+[0]*(L-1) p = [1,1] while n: if n%2: ans = polymul(ans,p) p = polymul(p,p) n //= 2 print(ans[k])