#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#define ll long long
using namespace std;
const int maxn=1000002;
const ll inf=-9999999999999999;
ll n,p;
ll f[maxn],a[maxn],ans=inf;
//手上数字
ll f2[maxn],f3[maxn];
//分数
int main(){
//freopen("1.txt","r",stdin);
scanf("%lld%lld",&n,&p);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
f[1]=a[1];
f3[1]=a[1];
ll ma=f[1];
for(int i=2;i<=n;i++){
f[i]=max(f[i-1]+a[i],a[i]);
f3[i]=max(f[i],f3[i-1]);
}
f2[1]=f3[1];
ans=f2[1];
for(int i=2;i<=n;i++){
f2[i]=max(f2[i-1],f2[i-1]+f3[i-1]);
ans=max(ans,f2[i]);
}
ans%=p;
printf("%lld",ans);
return 0;
}