#include <bits/stdc++.h>
using namespace std;
long long a[100010], qian[100010], ans = 1 << 30, n, m, p;
bool pd(long long k) {
  long long s1 = 0, s2 = 0;
  long long o = 0;
  for (long long i = 1; i <= k; i++) {
    if (a[i] > p)
      o += a[i] - p;
    else {
      long long t = min(k, i + i * m);
      if (qian[t] - qian[i - 1] + o < p) {
        s1++;
        o += a[i];
      } else
        o -= p - a[i];
    }
  }
  o = 0;
  for (long long i = n; i > k; i--) {
    if (a[i] > p)
      o += a[i] - p;
    else {
      long long t = max(k, i - (n - i + 1ll) * m);
      if (qian[i] - qian[t - 1] + o < p) {
        s2++;
        o += a[i];
      } else
        o -= p - a[i];
    }
  }
  ans = min(ans, max(s1, s2));
  if (s1 > s2) return false;
  return true;
}
int main() {
  scanf("%I64d%I64d%I64d\n", &n, &m, &p);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  for (int i = 1; i <= n; i++) qian[i] = qian[i - 1] + a[i];
  long long l = 1, r = n, mid;
  while (l <= r) {
    mid = (l + r) / 2;
    if (pd(mid))
      r = mid - 1;
    else
      l = mid + 1;
  }
  printf("%I64d\n", ans);
}
