n,m,k=map(int,input().split()) a=list(map(int,input().split())) if m==1: for i in range(n): print(int(a[i]%k==0)) exit() M=998244353 qi1=[] qi2=[0]*k qi2[0]=1 qo1=[] qo2=[[0]*k] qo2[-1][0]=1 for i in reversed(range(m-1)): v=a[i] qo1+=[i] nq=[0]*k for j in range(k): nq[j]+=qo2[-1][j] nq[(j+v)%k]+=qo2[-1][j] for j in range(k): nq[j]%=M qo2+=[nq[:]] for i in range(m-1,n): v=a[i] qi1+=[i] nq=[0]*k for j in range(k): nq[j]+=qi2[j] nq[(j+v)%k]+=qi2[j] for j in range(k): nq[j]%=M qi2=nq[:] print((sum(qi2[j]*qo2[-1][(-j)%k] for j in range(k))-1)%M) qo1.pop() qo2.pop() if len(qo1)==0: while len(qi1)>0: ii=qi1.pop() v=a[ii] qo1+=[ii] nq=[0]*k for j in range(k): nq[j]+=qo2[-1][j] nq[(j+v)%k]+=qo2[-1][j] for j in range(k): nq[j]%=M qo2+=[nq[:]] qi2=[0]*k qi2[0]=1