#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int a[maxn];
int cur[maxn];
int n, d, b;
int l[maxn], r[maxn];
bool solve(int k) {
  int L = k;
  int R = n - 1 - k;
  memset(cur, 0, sizeof cur);
  int x = L;
  for (int i = 0; i < n; i++) {
    int rem = a[i];
    while (rem && x >= l[i] && x <= r[i]) {
      int t = min(b - cur[x], rem);
      rem -= t;
      cur[x] += t;
      if (cur[x] == b) x++;
    }
  }
  if (x > R) {
    return true;
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> d >> b;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    int L = i, R = n - 1;
    while (L <= R) {
      int M = (L + R) / 2;
      if ((M - i + (d - 1)) / d <= (n - M)) {
        r[i] = M;
        L = M + 1;
      } else {
        R = M - 1;
      }
    }
    L = 0, R = i;
    while (L <= R) {
      int M = (L + R) / 2;
      if ((i - M + (d - 1)) / d <= M + 1) {
        l[i] = M;
        R = M - 1;
      } else {
        L = M + 1;
      }
    }
  }
  int ans;
  int L = 0, R = n / 2;
  while (L <= R) {
    int M = (L + R) / 2;
    if (solve(M)) {
      ans = M;
      R = M - 1;
    } else {
      L = M + 1;
    }
  }
  cout << ans;
}
