#include <bits/stdc++.h>
using namespace std;
int arr[35 + 5];
vector<int> List[2];
void brute(int L, int R, int id, int m) {
  int n = R - L + 1, sum, tot = 1 << n, i, j;
  for (i = 0; i < tot; ++i) {
    sum = 0;
    for (j = 0; j < n; ++j) {
      if (i & (1 << j)) sum += arr[j + L];
      sum %= m;
    }
    List[id].push_back(sum);
  }
}
int main() {
  ios::sync_with_stdio(false);
  int n, m, i, ans = 0;
  cin >> n >> m;
  for (i = 0; i < n; ++i) {
    cin >> arr[i];
    arr[i] %= m;
  }
  brute(0, n / 2, 0, m);
  brute(n / 2 + 1, n - 1, 1, m);
  sort(List[1].begin(), List[1].end());
  for (auto z : List[0]) {
    i = lower_bound(List[1].begin(), List[1].end(), m - z) - List[1].begin();
    ans = max(ans, (z + List[1][i - 1]) % m);
    ans = max(ans, (z + List[1].back()) % m);
  }
  cout << ans;
  return 0;
}
