#include <bits/stdc++.h>
#define ll long long
#define LOG 20
#define MASK(i) (1LL<<(i))
#define BIT(x,i) (((x)>>(i))&1)
#define FIRST_BIT(mask) __builtin_ctz((mask)&(-mask))
#define ERASE_BIT(mask) (mask)^((mask)&(-mask))
#define left _left
#define right _right
#define task "t"
#define int long long
using namespace std;
const ll INF=1e18;
const int iat=1e5+9;
const int mod=1e9+7;
void fast_IO()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
if(fopen(task".inp","r"))
{
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
}
int n,d,a[iat],pre[iat],maxi[iat];
signed main()
{
fast_IO();
cin>>n>>d;
for(int i=1; i<=n; i++)cin>>a[i],pre[i]=pre[i-1]+a[i];
maxi[n]=pre[n];
for(int i=n-1; i>=1; i--)maxi[i]=max(maxi[i+1],pre[i]);
int add=0,sum=0,ans=0;
for(int i=1; i<=n; i++)
{
if(a[i]!=0)
{
sum+=a[i];
if(sum>d)
{
cout<<-1;
return 0;
}
}
else if(sum<0)
{
if(i==n)
{
ans++;
break;
}
int tmp=d-(maxi[i+1]+add); /// so tien lon nhat ma ta co the them vao de nhung lan cong sau thoa man
if(sum+tmp<0)
{
cout<<-1;
return 0;
}
int temp=min((d-sum),tmp);
sum+=temp;
add+=temp;
ans++;
}
}
cout<<ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgTE9HIDIwCiNkZWZpbmUgTUFTSyhpKSAoMUxMPDwoaSkpCiNkZWZpbmUgQklUKHgsaSkgKCgoeCk+PihpKSkmMSkKI2RlZmluZSBGSVJTVF9CSVQobWFzaykgX19idWlsdGluX2N0eigobWFzaykmKC1tYXNrKSkKI2RlZmluZSBFUkFTRV9CSVQobWFzaykgKG1hc2spXigobWFzaykmKC1tYXNrKSkKI2RlZmluZSBsZWZ0IF9sZWZ0CiNkZWZpbmUgcmlnaHQgX3JpZ2h0CiNkZWZpbmUgdGFzayAidCIKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIElORj0xZTE4Owpjb25zdCBpbnQgaWF0PTFlNSs5Owpjb25zdCBpbnQgbW9kPTFlOSs3Owp2b2lkIGZhc3RfSU8oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsInIiKSkKICAgIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsInIiLHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsInciLHN0ZG91dCk7CiAgICB9Cn0KaW50IG4sZCxhW2lhdF0scHJlW2lhdF0sbWF4aVtpYXRdOwpzaWduZWQgbWFpbigpCnsKICAgIGZhc3RfSU8oKTsKICAgIGNpbj4+bj4+ZDsKICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspY2luPj5hW2ldLHByZVtpXT1wcmVbaS0xXSthW2ldOwogICAgbWF4aVtuXT1wcmVbbl07CiAgICBmb3IoaW50IGk9bi0xOyBpPj0xOyBpLS0pbWF4aVtpXT1tYXgobWF4aVtpKzFdLHByZVtpXSk7CiAgICBpbnQgYWRkPTAsc3VtPTAsYW5zPTA7CiAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGlmKGFbaV0hPTApCiAgICAgICAgewogICAgICAgICAgICBzdW0rPWFbaV07CiAgICAgICAgICAgIGlmKHN1bT5kKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDwtMTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoc3VtPDApCiAgICAgICAgewogICAgICAgICAgICBpZihpPT1uKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCB0bXA9ZC0obWF4aVtpKzFdK2FkZCk7IC8vLyBzbyB0aWVuIGxvbiBuaGF0IG1hIHRhIGNvIHRoZSB0aGVtIHZhbyBkZSBuaHVuZyBsYW4gY29uZyBzYXUgdGhvYSBtYW4KICAgICAgICAgICAgaWYoc3VtK3RtcDwwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDwtMTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCB0ZW1wPW1pbigoZC1zdW0pLHRtcCk7CiAgICAgICAgICAgIHN1bSs9dGVtcDsKICAgICAgICAgICAgYWRkKz10ZW1wOwogICAgICAgICAgICBhbnMrKzsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxhbnM7Cn0K