#include <bits/stdc++.h>
const int N = 266666;
const int M = 100000007;
long long Pw(long long a, long long b, long long p) {
  long long v = 1;
  for (; b; b >>= 1, a = a * a % p)
    if (b & 1) v = v * a % p;
  return v;
}
using namespace std;
int n, d, b, i, j, anl, anr, l, r, T, x, V[N], a[N];
void bd(int k, int l, int r) {
  if (l == r) {
    V[k] = a[l];
    return;
  }
  int md = l + r >> 1;
  bd(k << 1, l, md);
  bd(k << 1 | 1, md + 1, r);
  V[k] = V[k << 1] + V[k << 1 | 1];
}
void cg(int k, int l, int r, int x) {
  if (l == r) {
    V[k] = a[l];
    return;
  }
  int md = l + r >> 1;
  if (x <= md)
    cg(k << 1, l, md, x);
  else
    cg(k << 1 | 1, md + 1, r, x);
  V[k] = V[k << 1] + V[k << 1 | 1];
}
int qu(int k, int l, int r, int x, int y) {
  if (x <= l && r <= y) return V[k];
  int md = l + r >> 1, w = 0;
  if (x <= md) w += qu(k << 1, l, md, x, y);
  if (y > md) w += qu(k << 1 | 1, md + 1, r, x, y);
  return w;
}
int main() {
  scanf("%d", &n);
  scanf("%d", &d);
  scanf("%d", &b);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  bd(1, 1, n);
  for (i = 1, j = n, l = 1, r = n; i <= j; i++, j--) {
    T++;
    if (anl >= anr) {
      if (qu(1, 1, n, 1, min(1ll * T * d + i, 1ll * n)) >= b) {
        for (x = b; x;) {
          if (a[l] >= x) {
            a[l] -= x;
            cg(1, 1, n, l);
            break;
          } else {
            x -= a[l];
            a[l] = 0;
            cg(1, 1, n, l);
            l++;
          }
        }
      } else
        anl++;
      if (i != j)
        if (qu(1, 1, n, max(-1ll * T * d + j, 1ll), n) >= b) {
          for (x = b; x;) {
            if (a[r] >= x) {
              a[r] -= x;
              cg(1, 1, n, r);
              break;
            } else {
              x -= a[r];
              a[r] = 0;
              cg(1, 1, n, r);
              r--;
            }
          }
        } else
          anr++;
    } else {
      if (qu(1, 1, n, max(-1ll * T * d + j, 1ll), n) >= b) {
        for (x = b; x;) {
          if (a[r] >= x) {
            a[r] -= x;
            cg(1, 1, n, r);
            break;
          } else {
            x -= a[r];
            a[r] = 0;
            cg(1, 1, n, r);
            r--;
          }
        }
      } else
        anr++;
      if (i != j)
        if (qu(1, 1, n, 1, min(1ll * T * d + i, 1ll * n)) >= b) {
          for (x = b; x;) {
            if (a[l] >= x) {
              a[l] -= x;
              cg(1, 1, n, l);
              break;
            } else {
              x -= a[l];
              a[l] = 0;
              cg(1, 1, n, l);
              l++;
            }
          }
        } else
          anl++;
    }
  }
  printf("%d", max(anl, anr));
}
