#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
vector<int>a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
long long ans=0;
for(int i=0;i<(1<<n);i++){
long long sum=0;
for(int j=0;j<n;j++){
if(i&(1<<j))sum=(sum+a[j])%m;
}
ans=max(ans,sum);
}
cout<<ans<<endl;
return 0;
}
//新学的位运算求解幂集法:
//双重for循环:第一层枚举1<<n(2^n)个子集,第二层枚举每一个子集(二进制)中1的出现位置(i&(1<<j)),然后求和,取模。

京公网安备 11010502036488号