#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[50];
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    a[i] %= m;
  }
  sort(a, a + n);
  set<int> S1, S2;
  for (int i = 0; i < n; i++) {
    set<int> s = i < n / 2 ? S1 : S2;
    s.insert(a[i]);
    for (auto b : i < n / 2 ? S1 : S2) {
      s.insert((a[i] + b) % m);
    }
    if (i < n / 2)
      S1 = s;
    else
      S2 = s;
  }
  S1.insert(0);
  S2.insert(0);
  int best = 0;
  for (auto b : S1) {
    best = max(best, b + *(--S2.lower_bound(m - b)));
  }
  cout << best;
  return 0;
}
