#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long LL;
const int N = 1000010, INF = 0x3f3f3f3f;
int n, p;
LL sum, ans;
LL a[N], s[N], f[N];
int main()
{
scanf ("%d%d", &n, &p);
for (int i = 1; i <= n; i ++ ) scanf ("%lld", &a[i]);
s[0] = -INF;
for (int i = 1; i <= n; i ++ )
{
sum += a[i];
s[i] = max(s[i - 1], sum);
if(sum < 0) sum = 0;
}
f[1] = s[1] % p;
f[2] = (s[1] + f[1]) % p;
for (int i = 3; i <= n; i ++ )
{
f[i] = max(f[i - 1], f[i - 1] + s[i - 1]) % p;
}
printf("%lld", f[n] % p);
return 0;
}
谁能帮我看一眼?谢谢各位路过的大佬!