#include <bits/stdc++.h>
using namespace std;
long long n,p,a[1000100];
//f:存放特征值
long long f[1000100],score[1000100],r,ma = LONG_LONG_MIN;//r存放每个人的分数
long long i;
bool pd;
int main(){
cin>>n>>p;
//读入n个值
for(i = 1;i <= n;i++){
cin>>a[i];
}
//第一个人的特征值就是数字本身
f[1] = a[1];
//计算初步的特征
for(i = 2;i <= n;i++){
f[i] = max(f[i-1]+a[i],a[i]);
}
// for(i = 1;i <= n;i++){
// cout<<f[i]<<" ";
// }
// cout<<endl;
//考虑对于每个特征值,可能不是最佳答案
for(i = 2;i <= n;i++){
f[i] = max(f[i],f[i-1]);
}
// for(i = 1;i <= n;i++){
// cout<<f[i]<<" ";
// }
// cout<<endl;
//第一个人的分数是特征值
score[1] = f[1];
score[2] = f[1] + score[1];
ma = max(score[1],score[2]);
for(i = 3;i <= n;i++){
if(f[i-1]>0){
score[i]=score[i-1]+f[i-1];
if(score[i] > score[1]){
pd = true;
score[i] %= p;
}
}else{
score[i] = score[2];
}
ma = max(ma,score[i]);
}
// for(i = 1;i <= n;i++){
// cout<<score[i]<<" ";
// }
// cout<<endl;
// cout<<ma%p;
if(pd) cout<<score[n]%p;
else cout<<score[1]%p;
cout<<endl;
return 0;
}
/**************************************************************
Problem: 1800
User: admin
Language: C++
Result: Accepted
Time:756 ms
Memory:25512 kb
****************************************************************/