#include<bits/stdc++.h>
using namespace std;
struct node{
int shu;
long long te;
long long fen;
}a[1000001];
int main(){
int n,p;
cin>>n>>p;
for(int i=1;i<=n;i++)scanf("%d",&a[i].shu);
long long now=0,maxx=a[1].shu;
for(int i=1;i<=n;i++){
if(now<0)now=0;
now+=a[i].shu;
maxx=max(maxx,now);
a[i].te=maxx;
}
a[1].fen=a[1].te;
long long maxn=a[1].te+a[1].fen;
long long ans=a[1].fen;
for(int i=2;i<=n;i++){
a[i].fen=maxn;
maxn=max(maxn,1ll*(a[i].te+a[i].fen));
ans=max(ans,a[i].fen);
}
cout<<ans%p<<endl;
return 0;
}