#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1123456;
template <typename T>
T sqr(T x) {
  return x * x;
}
template <typename T>
void vout(T s) {
  cout << s << "\n";
  exit(0);
}
long long bp(long long a, long long n) {
  long long res = 1;
  while (n) {
    if (n % 2) res *= a;
    a *= a;
    n >>= 1;
  }
  return res;
}
vector<long long> v[MAXN], va;
string s1, s2, s3;
set<long long> s;
char cc;
long long sc1;
long long a[MAXN], b, c, a1, b1, c1, i, j, n, m, k, ans, sc, x;
long long d;
long long p[MAXN];
bool check(long long x) {
  for (i = 1; i <= n; i++) a[i] = p[i];
  long long le = 1 + x, ri = n - x;
  long long l1 = 1, r1 = n, time = x + 1;
  while (le < ri) {
    sc = b;
    while (sc && l1 <= n) {
      if (abs(le - l1) > time * d) return 0;
      long long kol = min(sc, a[l1]);
      sc -= kol;
      a[l1] -= kol;
      if (a[l1] == 0) l1++;
    }
    if (sc) return 0;
    sc = b;
    while (sc && r1 > 0) {
      if (abs(ri - r1) > time * d) return 0;
      long long kol = min(sc, a[r1]);
      sc -= kol;
      a[r1] -= kol;
      if (!a[r1]) r1--;
    }
    if (sc) return 0;
    le++, ri--;
    time++;
  }
  if (le == ri) {
    sc = b;
    while (sc && l1 <= n) {
      if (abs(le - l1) > time * d) return 0;
      long long kol = min(sc, a[l1]);
      sc -= kol;
      a[l1] -= kol;
      if (a[l1] == 0) l1++;
    }
    if (sc) return 0;
  }
  return 1;
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> d >> b;
  for (i = 1; i <= n; i++) cin >> a[i];
  for (i = 1; i <= n; i++) p[i] = a[i];
  long long l = 0, r = n / 2;
  while (l < r) {
    long long c = (l + r) / 2;
    if (check(c))
      r = c;
    else
      l = c + 1;
  }
  vout(l);
  return 0;
}
