记录
#include <iostream>
using namespace std;
#define int long long
int n, p;
int nums[1000006];
int maxnums[1000006];
int feature[1000006];
int score[1000006];
bool flag;
int ans;
signed main()
{
cin >> n >> p;
for(int i = 1; i <= n; i++)
{
cin >> nums[i];
maxnums[i] = max(nums[i], maxnums[i - 1] + nums[i]);
}
feature[1] = maxnums[1];
for(int i = 2; i <= n; i++)
{
feature[i] = max(feature[i - 1], maxnums[i]);
}
score[1] = feature[1];
ans = score[1];
score[2] = score[1] + feature[1];
if(score[2] > score[1])
{
ans = score[2];
flag = true;
}
for(int i = 3; i <= n; i++)
{
if(feature[i - 1] > 0)
{
score[i] = score[i - 1] + feature[i - 1];
}
else
{
score[i] = score[2];
continue;
}
if(score[i] > score[1])
{
flag = true;
}
if(flag)
{
score[i] %= p;
}
ans = score[i];
}
if(flag)
{
cout << ans << endl;
}
else
{
cout << score[1] << endl;
}
return 0;
}