#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
long long n, d, b;
long long nal[MAXN];
long long pmid;
long long p1nal[MAXN], p2nal[MAXN];
long long Get(long long* from, int l, int r) {
  if (l > r) return 0;
  if (l == 0)
    return from[r];
  else
    return from[r] - from[l - 1];
}
void InitP(long long how) {
  for (int i = 0; i < n; ++i) {
    p1nal[i] = min(how, nal[i]);
    how -= p1nal[i];
  }
  for (int i = 0; i < n; ++i) p2nal[i] = nal[i] - p1nal[i];
  for (int i = 1; i < n; ++i)
    p1nal[i] += p1nal[i - 1], p2nal[i] += p2nal[i - 1];
}
pair<bool, bool> Can(int side, long long sep) {
  InitP(sep);
  pair<bool, bool> res = make_pair(true, true);
  long long need = 0;
  for (int i = side; i <= pmid; ++i) {
    long long have =
        Get(p1nal, max(0LL, i - (i + 1) * d), min(n - 1, i + (i + 1) * d));
    need += b;
    if (need > have) {
      res.first = false;
      break;
    }
  }
  need = 0;
  for (int i = n - 1 - side; i > pmid; --i) {
    long long have =
        Get(p2nal, max(0LL, i - (n - i) * d), min(n - 1, i + (n - i) * d));
    need += b;
    if (need > have) {
      res.second = false;
      break;
    }
  }
  return res;
}
bool CanSide(int side) {
  long long lo = 0, hi = n * b, mid;
  for (;;) {
    if (lo + 1 >= hi) {
      auto c1 = Can(side, lo);
      auto c2 = Can(side, hi);
      if (c1.first && c1.second) return true;
      if (c2.first && c2.second) return true;
      return false;
    }
    mid = (lo + hi) >> 1;
    auto can = Can(side, mid);
    if (can.first && can.second) return true;
    if (!can.first && !can.second) return false;
    if (can.first)
      hi = mid;
    else
      lo = mid;
  }
}
int Solve() {
  int lo = 0, hi = n >> 1, mid;
  for (;;) {
    if (lo + 1 >= hi) {
      if (CanSide(lo)) return lo;
      return hi;
    }
    mid = (lo + hi) >> 1;
    if (CanSide(mid))
      hi = mid;
    else
      lo = mid;
  }
}
int main() {
  scanf(
      "%I64d"
      "%I64d"
      "%I64d",
      &n, &d, &b);
  for (int i = 0; i < n; ++i) scanf("%I64d", &nal[i]);
  pmid = (n - 1) / 2;
  printf("%d\n", Solve());
  return 0;
}
