#include<stdio.h>
int a[1000001],dp,n,p;
long long b[1000001];
int main(){
scanf("%d%d",&n,&p);
for(int i=1;i<=n;++i)scanf("%d",a+i);
dp=b[1]=a[1];
for(int i=2;i<=n;++i){
dp=dp>0?dp+a[i]:a[i];
b[i]=b[i-1]>dp?b[i-1]:dp;
}bool flag=b[1]>=0;int c=b[1]%p;
if(n>1)c=(c<<1)%p;
for(int i=3;i<=n;++i){
if(b[i-1]>0){
if(!flag){
if(b[i-1]>=-b[1])flag=1;
else b[1]+=b[i-1];
}
c=(c+b[i-1])%p;
}
}
printf("%d",flag?c:a[1]%p);
return 0;
}
WA了#2#7#8#9#10,思路和第一篇题解一样