MOD = 10**9 + 7 p, n, k, b = map(int, input().split()) a = list(map(int, input().split())) zeros = sum(1 for x in a if x == 0) non_zeros = [x for x in a if x != 0] # Precompute frequency lists for each non-zero a_i freq_list = [] for ai in non_zeros: freq = {} for x in range(p): s = pow(x, k, p) contrib = (ai * s) % p if contrib in freq: freq[contrib] += 1 else: freq[contrib] = 1 freq_list.append(list(freq.items())) # Initialize DP dp = [0] * p dp[0] = 1 for freq in freq_list: new_dp = [0] * p for s in range(p): if dp[s] == 0: continue for (v, cnt) in freq: new_s = (s + v) % p new_dp[new_s] = (new_dp[new_s] + dp[s] * cnt) % MOD dp = new_dp # Multiply by p^zeros result = (dp[b] * pow(p, zeros, MOD)) % MOD print(result)