/*
Fr: pdtduong
Note: uoc gi AC (")>
Wish: HSGS/PTNK 26-27
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define lcm(a, b) a*b/__gcd(a, b)
#define fi first
#define se second
#define pb push_back
#define YES cout << "YES\n";
#define NO cout << "NO\n";
const int maxn = 1e6+5, INF = 1e18;
int n, k;
int a[maxn];
int dp[1005], ndp[1005];
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// freopen("LED.INP", "r", stdin);
// freopen("LED.OUT", "w", stdout);
cin >> n >> k;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
for(int r = 0; r < k; r++) {
dp[r] = -INF;
}
dp[0] = 0;
for(int i = 1; i <= n; i++) {
for(int r = 0; r < k; r++) {
ndp[r] = dp[r];
}
for(int r = 0; r < k; r++) {
if(dp[r] == -INF) {
continue;
}
int nr = (r + a[i]) % k;
ndp[nr] = max(ndp[nr], dp[r] + a[i]);
}
for(int r = 0; r < k; r++) {
dp[r] = ndp[r];
}
}
if(dp[0] >= k) {
cout << dp[0];
} else {
cout << 0;
}
return 0;
}
LyoKICAgIEZyOiBwZHRkdW9uZwogICAgTm90ZTogdW9jIGdpIEFDICgiKT4gCiAgICBXaXNoOiBIU0dTL1BUTksgMjYtMjcKKi8KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgbGNtKGEsIGIpIGEqYi9fX2djZChhLCBiKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgWUVTIGNvdXQgPDwgIllFU1xuIjsKI2RlZmluZSBOTyBjb3V0IDw8ICJOT1xuIjsKY29uc3QgaW50IG1heG4gPSAxZTYrNSwgSU5GID0gMWUxODsKaW50IG4sIGs7CmludCBhW21heG5dOwppbnQgZHBbMTAwNV0sIG5kcFsxMDA1XTsKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICAvLyBmcmVvcGVuKCJMRUQuSU5QIiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCJMRUQuT1VUIiwgInciLCBzdGRvdXQpOwogICAgY2luID4+IG4gPj4gazsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAJY2luID4+IGFbaV07CiAgICB9CiAgICBmb3IoaW50IHIgPSAwOyByIDwgazsgcisrKSB7CiAgICAJZHBbcl0gPSAtSU5GOwogICAgfQogICAgZHBbMF0gPSAwOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IoaW50IHIgPSAwOyByIDwgazsgcisrKSB7CiAgICAgICAgCW5kcFtyXSA9IGRwW3JdOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IHIgPSAwOyByIDwgazsgcisrKSB7CiAgICAgICAgICAgIGlmKGRwW3JdID09IC1JTkYpIHsKICAgICAgICAgICAgCWNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCBuciA9IChyICsgYVtpXSkgJSBrOwogICAgICAgICAgICBuZHBbbnJdID0gbWF4KG5kcFtucl0sIGRwW3JdICsgYVtpXSk7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgciA9IDA7IHIgPCBrOyByKyspIHsKICAgICAgICAJZHBbcl0gPSBuZHBbcl07CiAgICAgICAgfQogICAgfQogICAgaWYoZHBbMF0gPj0gaykgewogICAgCWNvdXQgPDwgZHBbMF07CiAgICB9IGVsc2UgewogICAgCWNvdXQgPDwgMDsKICAgIH0KICAgIHJldHVybiAwOwp9