import sys MOD = 120586241 def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]); idx +=1 K = int(data[idx]); idx +=1 M = int(data[idx]); idx +=1 T = int(data[idx]); idx +=1 a = list(map(int, data[idx:idx+N])) a = [x % (10**K) for x in a] size = 10**K trans = [[0]*size for _ in range(size)] for num in a: s = [0]*K for i in range(K): s[i] = (num // (10**i)) % 10 for x in range(size): allowed = True for i in range(T): xi = (x // (10**i)) % 10 yi = s[i] if xi + yi >= 10: allowed = False break if not allowed: continue z = 0 for i in range(K): xi = (x // (10**i)) % 10 yi = s[i] if i < T: zi = xi + yi else: zi = (xi + yi) % 10 z += zi * (10**i) trans[x][z] += 1 def mat_mult(A, B): res = [[0]*size for _ in range(size)] for i in range(size): for k in range(size): if A[i][k] == 0: continue for j in range(size): res[i][j] = (res[i][j] + A[i][k] * B[k][j]) % MOD return res def mat_pow(mat, power): result = [[0]*size for _ in range(size)] for i in range(size): result[i][i] = 1 while power > 0: if power % 2 == 1: result = mat_mult(result, mat) mat = mat_mult(mat, mat) power //= 2 return result mat = [row[:] for row in trans] mat = mat_pow(mat, M) for i in range(size): print(mat[0][i] % MOD) if __name__ == "__main__": main()