#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 200000 + 100;
long long n, d, b, a[MAXN], su, a2[MAXN], ms, m1, m2, an1, an2;
bool f = false;
long long solve(long long gr) {
  long long ank = 0;
  long long su = 0, cur = 0;
  for (long long i = 0; i < gr; i++) {
    for (long long j = cur;
         j < n &&
         (long long)j <= (long long)i + (long long)(i + 1) * (long long)d;
         j++) {
      su += a2[j];
    }
    cur = i + (i + 1) * d + 1;
    if (su >= b) {
      su -= b;
    } else {
      ank++;
    }
  }
  return ank;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> d >> b;
  m1 = (n / 2 + n % 2);
  m2 = n - m1;
  ms = m1 * b;
  f = false;
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (long long i = 0; i < n; i++) {
    if (su + a[i] > ms) {
      a2[i] = ms - su;
      break;
    }
    su += a[i];
    a2[i] = a[i];
  }
  an1 = solve(m1);
  for (long long i = 0; i < n; i++) {
    a2[i] = a[i] - a2[i];
  }
  reverse(a2, a2 + n);
  an2 = solve(m2);
  cout << max(an1, an2);
  return 0;
}
