#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
int dp[N][8], n, k, a[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 7; j++) dp[i][j] = INT_MAX;
}
for (int i = 1; i <= 7; i++) {
dp[1][i] = (a[1] != i) ? 1 : 0;
}
for (int i = 2; i <= n; i++) {
for (int j = 1; j <= 7; j++) {
for (int p = max(1, j - k); p <= min(7, j + k); p++) {
dp[i][j] = min(dp[i][j], dp[i - 1][p] + (a[i] != j));
}
}
}
int ans = INT_MAX;
for (int i = 1; i <= 7; i++) {
ans = min(ans, dp[n][i]);
}
cout << ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e2 + 5;
const ll inf = 1e18;
ll a[N], dp[N][N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, k, d;
cin >> n >> k >> d;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) dp[i][j] = -inf;
}
dp[0][0] = 0;
for (int i = 1; i <= n; i++) {
for (int j = k; j >= 1; j--) {
for (int l = 0; l < d; l++) {
if (dp[j - 1 ][l] != -inf) {
dp[j][(l + a[i]) % d] = max(dp[j][(l + a[i]) % d], dp[j - 1][l] + a[i]);
}
}
}
}
cout << (dp[k][0] == -inf ? -1 : dp[k][0]);
return 0;
}