n,c = map(int,input().split()) a = list(map(int,input().split())) R = [[0] * n for _ in range(n)] for i in range(n): for j in range(i,n): R[j][i] = a[i] #print(R) P = 10 ** 9 + 7 def seki(x,y): l = [[0] * n for _ in range(n)] for i in range(n): for j in range(n): for k in range(n): l[i][j] += x[i][k] * y[k][j] % P l[i][j] %= P return l e = [[0] * n for _ in range(n)] for i in range(n): e[i][i] = 1 u = c while c: if c & 1: e = seki(e,R) R = seki(R,R) c >>= 1 ans = 0 for i in range(n): ans += e[-1][i] ans %= P for i in a: ans -= pow(i,u,P) #print(pow(i,c,P)) ans %= P print(ans) #print(e)