#include <iostream>
#define ll long long
using namespace std;
ll a[1000010], score[100010], dp[100010], s[100010];
int main()
{
ll n, p;
cin >> n >> p;
for (ll i = 1; i <= n; i++)
{
cin >> a[i];
s[i] = s[i - 1] + a[i];
}
// cout << dp[1].num << " ";
dp[1] = a[1];
for (ll i = 2; i <= n; i++)
{
dp[i] = max(max(a[1], a[i]), max(s[i], dp[i - 1]));
}
for (int i = 2; i <= n; i++)
{
if (dp[i] < dp[i - 1])
{
cout << dp[1] << endl;
return 0;
}
}
// for (int i = 1; i <= n; i++)
// {
// cout << dp[i] << " ";
// }
// cout << endl;
score[1] = 1ll * dp[1];
for (ll i = 2; i <= n; i++)
{
score[i] = score[i - 1] + dp[i - 1];
}
// for (int i = 1; i <= n; i++) cout << score[i] << " ";
// cout << endl;
cout << 1ll * max(score[1], score[n]) % p << endl;
return 0;
}
// if (dp[i - 1].end == i - 1)
// {
// if (dp[i - 1].num > a[i] && dp[i - 1].num > dp[i - 1].num + a[i])
// {
// dp[i].num = dp[i - 1].num;
// dp[i].end = i - 1;
// continue;
// }
// if (dp[i - 1].num + a[i] > a[i] && dp[i - 1].num + a[i] > dp[i - 1].num)
// {
// dp[i].num = dp[i - 1].num + a[i];
// dp[i].end = i;
// continue;
// //cout << 2 << endl;
// }
// if (a[i] > dp[i - 1].num && a[i] > dp[i - 1].num + a[i]);
// {
// dp[i].num = a[i];
// dp[i].end = i;
// continue;
// }
// }
// else
// {
// if (a[i] > dp[i - 1].num)
// {
// dp[i].num = a[i];
// dp[i].end = i;
// continue;
// }
// else
// {
// dp[i].num = dp[i - 1].num;
// dp[i].end = dp[i - 1].end;
// continue;
// }
// }
// dp[i] = max(1ll * a[i] % p, dp[i - 1] % p);
// cout << dp[i].num << " ";