#include <bits/stdc++.h>
using namespace std;
int R[100000], S[100000], s, K, r, n, b, d, t;
int A(int k) {
  s = 0;
  r = 0;
  K = 0;
  t = 0;
  for (int i = 0; i < n; i++) {
    S[i] = 0;
  }
  for (int i = 0; i < n; i++) {
    while (i - b * (t + 1) > t) {
      t++;
    }
    if (R[i] + s <= k) {
      S[t] += R[i];
      s += R[i];
    } else {
      S[t] += k - s;
      i += n;
    }
  }
  for (int i = 0; i <= (n - 1) / 2; i++) {
    K += S[i];
    if (K < d) {
      r++;
    } else {
      K -= d;
    }
  }
  return r;
}
int B(int k) {
  s = 0;
  r = 0;
  K = 0;
  t = n - 1;
  for (int i = 0; i < n; i++) {
    S[i] = 0;
  }
  for (int i = n - 1; i >= 0; i--) {
    while (i + b * (n - t) < t) {
      t--;
    }
    if (R[i] + s <= k) {
      S[t] += R[i];
      s += R[i];
    } else {
      S[t] += k - s;
      i = -1;
    }
  }
  for (int i = n - 1; i > (n - 1) / 2; i--) {
    K += S[i];
    if (K < d) {
      r++;
    } else {
      K -= d;
    }
  }
  return r;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> b >> d;
  int C = -1, D = n * d + 1, T, Sk;
  for (int i = 0; i < n; i++) {
    cin >> R[i];
  }
  while (D - C > 1) {
    T = (C + D) / 2;
    Sk = B(n * d - T) - A(T);
    if (Sk < 0) {
      C = T;
    } else {
      D = T;
    }
  }
  cout << max(B(D), A(D));
  return 0;
}
