#include <bits/stdc++.h>
using namespace std;
const int M = 1e5 + 5;
int x[M], T[19][M][2], nxt[M], mv[M][2], f[M][2], ans[M], b, n, w, q, tot;
void upd(int i) {
  (nxt[i] == n + 1 || (nxt[i] - 1) % b == 0)
      ? (f[i][0] = 1, f[i][1] = i)
      : (f[i][0] = f[nxt[i]][0] + 1, f[i][1] = f[nxt[i]][1]);
}
struct item {
  int i, k;
} A[M << 6];
bool operator<(item a, item b) { return a.k == b.k ? a.i > b.i : a.k < b.k; }
void in() {
  scanf("%d%d%d", &n, &w, &q);
  for (int i = 1; i <= n; i++)
    scanf("%d", x + i), T[0][i][0] = T[0][i][1] = x[i];
  for (int i = 1, k; i <= q; i++)
    scanf("%d", &k), A[++tot] = (item){i - q, w - k};
}
void ac() {
  for (int k = 1; 1 << k <= n; k++)
    for (int i = 1; i + (1 << k) <= n + 1; i++)
      T[k][i][0] = min(T[k - 1][i][0], T[k - 1][i + (1 << k - 1)][0]),
      T[k][i][1] = max(T[k - 1][i][1], T[k - 1][i + (1 << k - 1)][1]);
  while (b * b * b < n * 6) b++;
  for (int i = n; i >= 1; --i) {
    nxt[i] = i + 1, mv[i][0] = mv[i][1] = x[i], upd(i);
    for (int j = i + 1, mn = x[i], mx = x[i]; j <= n && (j - 1) % b > 0; j++)
      mn = min(mn, x[j]), mx = max(mx, x[j]), A[++tot] = (item){i, mx - mn};
  }
  std::sort(A + 1, A + 1 + tot);
  int cnt = 0;
  for (int i = 1, j, s, mn, mx, mx2, mn2, k, l, bl; i <= tot; i++)
    if (A[i].i <= 0) {
      j = 1, s = -1;
      for (; j <= n;) {
        s += f[j][0], j = f[j][1], mn = mv[j][0], mx = mv[j][1], mn2, mx2,
                      k = 0, l = j;
        for (; j + (1 << k) <= n + 1 &&
               (mx2 = max(mx, T[k][j][1])) - (mn2 = min(mn, T[k][j][0])) <=
                   A[i].k;
             k++)
          mn = mn2, mx = mx2;
        for (; k--;)
          if (l + (1 << k) <= n + 1 &&
              (mx2 = max(mx, T[k][l][1])) - (mn2 = min(mn, T[k][l][0])) <=
                  A[i].k)
            mn = mn2, mx = mx2, l += 1 << k;
        mv[j][0] = mn, mv[j][1] = mx, j = nxt[j] = l;
      }
      ans[A[i].i + q] = s;
    } else
      for (nxt[j = A[i].i]++, bl = (j - 1) / b * b + 1; j >= bl; j--) upd(j);
  for (int i = 1; i <= q; i++) printf("%d\n", ans[i]);
}
int main() {
  in();
  ac();
}
