#include <bits/stdc++.h>
using namespace std;
long long n, d, b;
long long a[100010];
long long l, r;
long long mid;
long long sum1, sum2, l1, l2;
long long tt;
long long sum[100010];
long long ans;
int main() {
  scanf("%I64d%I64d%I64d", &n, &d, &b);
  memset(sum, 0, sizeof(sum));
  for (long long i = 1; i <= n; i++) {
    scanf("%I64d", &a[i]);
    sum[i] = sum[i - 1] + a[i];
  }
  l = 1;
  r = n;
  ans = 100010;
  while (l <= r) {
    mid = (l + r) / 2;
    l1 = 0;
    sum1 = 0;
    for (long long i = 1; i <= mid; i++) {
      if (a[i] > b) {
        l1 = l1 + a[i] - b;
      } else {
        tt = (long long)min(
            (long long)mid,
            (long long)((long long)i + (long long)i * (long long)d));
        if (sum[tt] - sum[i - 1] + l1 < b) {
          l1 += a[i];
          sum1++;
        } else {
          l1 = l1 - (b - a[i]);
        }
      }
    }
    l2 = 0;
    sum2 = 0;
    for (long long i = n; i >= mid + 1; i--) {
      if (a[i] > b) {
        l2 = l2 + a[i] - b;
      } else {
        tt = (long long)max(
            (long long)mid,
            (long long)i - (long long)d * (long long)(n - i + 1));
        if (sum[i] - sum[tt - 1] + l2 < b) {
          l2 += a[i];
          sum2++;
        } else {
          l2 = l2 - (b - a[i]);
        }
      }
    }
    ans = min(ans, max(sum1, sum2));
    if (sum1 > sum2)
      l = mid + 1;
    else if (sum1 < sum2)
      r = mid - 1;
    else
      break;
  }
  printf("%I64d", ans);
  return 0;
}
