#include <stdio.h>
#define ll long long
using namespace std;
int read(){
int a1=0,k1=1;char c1=getchar();
while(c1<'0'||c1>'9'){
if(c1=='-')k1=-1;c1=getchar();
}
while(c1>='0'&&c1<='9'){
a1=a1*10+c1-'0';
c1=getchar();
}
return a1*k1;
}
inline void out1(ll n) {
if(n < 0)
putchar ('-') , n = -n;
if(n > 9)
out1(n / 10);
putchar(n % 10 + '0');
}
inline void out(ll n){
out1(n);printf("\n");
}
int a[100005];
int/*signed*/ main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n=read(),h=read(),k=read();
int wait=0,ans=0;
for(int i=1;i<=n;++i)a[i]=read();
int i=1,sb=0;
// while(1){
// if(wait+a[i]<=h){
// wait+=a[i];++i;
// }
// else break;
// }
// ans++;
while(i<=n){
if(a[i]+wait<=h){
wait+=a[i];
++i;sb=1;
}
else {
if(sb)wait-=k,sb=0;
ans++;wait-=k;ans++;
}
// printf("%d %d %d %d\n",i-1,wait,k,ans);
}
ans+=wait/k+(wait%k!=0);
printf("%d\n",ans);
return 0;
}
/*
5 6 3
5 4 3 2 1
5
*/