#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
****************************************************************/