#include <bits/stdc++.h>
using namespace std;
#define forsn(i, s, n) for (int i = int(s); i < int(n); i++)
#define forn(i, n) forsn(i, 0, n)
#define dforsn(i, s, n) for (int i = int(n) - 1; i >= int(s); i--)
#define dforn(i, n) dforsn(i, 0, n)
using vi = vector<int>;
using ii = pair<int, int>;
using vii = vector<ii>;
using ll = long long;
using ld = long double;
using vll = vector<ll>;
using vb = vector<bool>;
using pll = pair<ll, ll>;
#define sz(x) int(x.size())
#define all(x) begin(x), end(x)
#define pb push_back
#define eb emplace_back
#define ef emplace_front
#define fst first
#define snd second
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, l;
cin >> n >> l;
vi a(n);
forn(i, n) cin >> a[i];
int q;
cin >> q;
vector<short> k(q);
forn(i, q) cin >> k[i];
vector<short> ks = k;
sort(all(ks));
vector<short> pos(l + 1);
int j = 0;
forn(i, l + 1) {
while (j < sz(ks) && ks[j] < i) j++;
pos[i] = j;
}
vector<vector<short>> cnt(n - l + 1, vector<short>(sz(k) + 1));
forsn(d, -n + 1, n) if (d != 0) {
int s = max(0, -d);
int e = min(n, n - d);
short curr = 0;
forsn(i, s, e) {
curr += a[i] != a[i + d];
if (i - s >= l) curr -= a[i - l] != a[i - l + d];
if (i - s >= l - 1) {
cnt[i - (l - 1)][pos[curr]]++;
}
}
}
forn(i, n - l + 1) forn(j, sz(ks)) cnt[i][j + 1] += cnt[i][j];
forn(_, q) {
int j = pos[k[_]];
forn(i, n - l + 1) cout << cnt[i][j] << " \n"[i == n - l];
}
return 0;
}