#include <bits/stdc++.h>
using namespace std;
long long a[100007], s[100007], n, d, b;
void getans(long long mid, long long &x1, long long &x2) {
  long long sum, i, j;
  sum = 0;
  for (i = 1; sum + a[i] < mid; sum += a[i], i++)
    ;
  for (j = 1; j < i; j++) s[j] = s[j - 1] + a[j];
  s[i] = mid;
  sum = 0;
  for (j = 1; j <= n / 2; j++) {
    if (s[min(j + j * d, i)] - sum * b >= b) {
      sum++;
    }
  }
  x1 = n / 2 - sum;
  for (j = n; j > i; j--) s[j] = s[j + 1] + a[j];
  s[i] = n * b - mid;
  sum = 0;
  for (j = n; j >= n - n / 2 + 1; j--) {
    if (s[max(j - (n - j + 1) * d, i)] - sum * b >= b) {
      sum++;
    }
  }
  x2 = n / 2 - sum;
}
int main() {
  long long l, r, mid, i, x1, x2, ans;
  scanf("%lld%lld%lld", &n, &d, &b);
  for (i = 1; i <= n; i++) scanf("%lld", &a[i]);
  l = 0;
  r = n * b;
  ans = 0x3f3f3f3f;
  while (l <= r) {
    mid = l + r >> 1;
    getans(mid, x1, x2);
    ans = min(ans, max(x1, x2));
    if (x1 > x2)
      l = mid + 1;
    else
      r = mid - 1;
  }
  printf("%lld", ans);
  return 0;
}
