#include <bits/stdc++.h>
using namespace std;
int const M = 5e5 + 10, M2 = 1e7 + 10, mod = 1e9 + 7, mod2 = 1e9 + 9,
          inf = 1e9 + 30;
int fen[1000 + 10][1000 + 10], mn[1000 + 10], k, p, a[M], ps[M],
    dp[M][100 + 10];
void add(int id, int ind, int now) {
  int tmp = ind;
  mn[id] = min(mn[id], now - tmp);
  for (; ind <= p; ind += ind & -ind)
    fen[id][ind] = min(fen[id][ind], now - tmp);
}
int get(int id, int ind) {
  int ans = inf;
  for (; ind; ind -= ind & -ind) ans = min(fen[id][ind], ans);
  return ans;
}
int32_t main() {
  int n;
  cin >> n >> k >> p;
  for (int i = 1; i <= n; i++)
    cin >> a[i], ps[i] = ps[i - 1] + a[i], ps[i] %= p;
  for (int i = 1; i <= n; i++) ps[i]++;
  for (int i = 0; i <= k; i++) {
    mn[i] = inf;
    for (int j = 0; j <= p; j++) fen[i][j] = inf;
  }
  add(k, 1, 0);
  ps[n + 1] = ps[n];
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < k; j++) {
      int hlp = get(j + 1, ps[i]);
      hlp = min(hlp, mn[j + 1] + p);
      hlp += ps[i];
      dp[i][j] = hlp;
      add(j, ps[i], dp[i][j]);
    }
  }
  cout << dp[n][0];
}
