#include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cstdio> using namespace std; typedef long long ll; int n; int p; int a[1000005]; ll b[1000005]; ll c[1000005]; int main(){ //freopen("number.in","r",stdin); //freopen("number.out","w",stdout); scanf("%d%d",&n,&p); for (int i=1;i<=n;i++)scanf("%d",&a[i]); b[1]=a[1]; ll now=a[1]>0?a[1]:0; for (int i=2;i<=n;i++){ b[i]=b[i-1]; now+=a[i]; b[i]=max(now,b[i]); if(now<0)now=0; } c[1]=b[1]; c[2]=c[1]+b[1]; int ok=0; ll tmp=c[1]; for (int i=2;i<=n-1;i++){ tmp+=max(b[i],0ll); if(tmp>=0){ ok=1; break; } } for (int i=3;i<=n;i++) c[i]=(c[i-1]+max(b[i-1],0ll))%p; if(ok)printf("%d\n",int(c[n])); else printf("%d\n",int(c[1]%p)); return 0; } /************************************************************** Problem: 2322 User: admin Language: C++ Result: Accepted Time:446 ms Memory:21608 kb ****************************************************************/