#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)),然后求和,取模。