#include <bits/stdc++.h>
using namespace std;
int n, d;
long long b;
long long a[100055], c[100055];
queue<int> que;
bool trial(int k) {
  for (int i = 0; i < n; i++) c[i] = a[i];
  int pt = 0;
  while (!que.empty()) que.pop();
  for (int i = k; i < (n + 1) / 2; i++) {
    while (pt < n && 1ll * pt - i <= 1ll * d * (i + 1)) {
      que.push(pt++);
    }
    while (c[i] < b) {
      if (que.empty()) return false;
      if (que.front() == i) {
        que.pop();
        continue;
      }
      if (b - c[i] >= c[que.front()]) {
        c[i] += c[que.front()];
        c[que.front()] = 0;
        que.pop();
      } else {
        c[que.front()] -= b - c[i];
        c[i] = b;
      }
    }
    c[i] -= b;
  }
  pt = n - 1;
  while (!que.empty()) que.pop();
  for (int i = n - k - 1; i >= (n + 1) / 2; i--) {
    while (pt >= 0 && 1ll * i - pt <= 1ll * d * (n - i)) {
      que.push(pt--);
    }
    while (c[i] < b) {
      if (que.empty()) return false;
      if (que.front() == i) {
        que.pop();
        continue;
      }
      if (b - c[i] >= c[que.front()]) {
        c[i] += c[que.front()];
        c[que.front()] = 0;
        que.pop();
      } else {
        c[que.front()] -= b - c[i];
        c[i] = b;
      }
    }
    c[i] -= b;
  }
  return true;
}
int main() {
  scanf("%d %d %lld", &n, &d, &b);
  for (int i = 0; i < n; i++) scanf("%lld", &a[i]);
  int lb = -1, ub = n;
  while (ub - lb > 1) {
    int mid = (ub + lb) >> 1;
    if (trial(mid))
      ub = mid;
    else
      lb = mid;
  }
  cout << ub;
  return 0;
}
