N,K=map(int,input().split()) A=list(map(int,input().split())) mod=10**9+7 def m(a,b): r=[[0]*len(b[0]) for i in range(len(a))] for i in range(len(a)): for k in range(len(b)): for j in range(len(b[0])): r[i][j]=(r[i][j]+a[i][k]*b[k][j])%mod return r def p(a,n): r=[[0]*len(a) for i in range(len(a))] b=[] for i in range(len(a)): r[i][i]=1 b.append(a[i][:]) l=n while l>0: if l&1: r=m(b,r) b=m(b,b) l>>=1 return r if K<=10**6: C=[0] for i in range(N): C.append(C[i]+A[i]) for i in range(K): C.append((C[N+i]-C[i]+C[-1])%mod) print((C[K]-C[K-1])%mod,C[K]) exit() B=[[0]*(N+1) for i in range(N+1)] for i in range(N): B[i][-1]=A[-i-1] C=[[0]*(N+1) for i in range(N+1)] for i in range(N-1): C[i+1][i]=1 C[0][i+1]=1 C[N][i+1]=1 C[0][0]=1 C[N][0]=1 C[N][N]=1 X=m(p(C,K-N),B) print(X[0][N],(X[N][N]+sum(A))%mod)