#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
int n,st[100100],head=1,tail,pos[100100],active[100100];
long long s[100100],f[100100],m;
priority_queue < pair<long long,int> > q;
int main()
{
// freopen("difmax.inp" , "r" , stdin);
// freopen("difmax.ans" , "w" , stdout);
int x;
cin >> n >> m;
for (int i=1,j=0;i<=n;i++)
{
scanf("%d",&x);
if (x>m)
{
cout << -1 << endl;
return 0;
}
while (tail>=head && x>=st[tail]) active[pos[tail--]]=0;
st[++tail]=x; pos[tail]=i;
s[i]=s[i-1]+x;
while (s[i]-s[j]>m) j++;
while (head<=tail && pos[head]<=j) active[pos[head++]]=0;
active[pos[head]]=0;
f[i]=f[j]+st[head];
while (!q.empty())
{
pair <long long,int> u=q.top();
if (!active[u.second]) q.pop();
else
{
f[i]=min(f[i],-u.first);
break;
}
}
if (tail>head)
{
f[i]=min(f[i],f[pos[tail-1]]+st[tail]);
q.push(make_pair(-f[pos[tail-1]]-st[tail],i));
}
else q.push(make_pair(0LL,i));
active[i]=1;
}
cout << f[n] << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbixzdFsxMDAxMDBdLGhlYWQ9MSx0YWlsLHBvc1sxMDAxMDBdLGFjdGl2ZVsxMDAxMDBdOwpsb25nIGxvbmcgc1sxMDAxMDBdLGZbMTAwMTAwXSxtOwpwcmlvcml0eV9xdWV1ZSA8IHBhaXI8bG9uZyBsb25nLGludD4gPiBxOwoKaW50IG1haW4oKQp7Ci8vICAgIGZyZW9wZW4oImRpZm1heC5pbnAiICwgInIiICwgc3RkaW4pOwovLyAgICBmcmVvcGVuKCJkaWZtYXguYW5zIiAsICJ3IiAsIHN0ZG91dCk7CiAgICBpbnQgeDsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpPTEsaj0wO2k8PW47aSsrKQogICAgewogICAgICAgIHNjYW5mKCIlZCIsJngpOwogICAgICAgIGlmICh4Pm0pCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IC0xIDw8IGVuZGw7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHRhaWw+PWhlYWQgJiYgeD49c3RbdGFpbF0pIGFjdGl2ZVtwb3NbdGFpbC0tXV09MDsKICAgICAgICBzdFsrK3RhaWxdPXg7IHBvc1t0YWlsXT1pOwoKICAgICAgICBzW2ldPXNbaS0xXSt4OwogICAgICAgIHdoaWxlIChzW2ldLXNbal0+bSkgaisrOwogICAgICAgIHdoaWxlIChoZWFkPD10YWlsICYmIHBvc1toZWFkXTw9aikgYWN0aXZlW3Bvc1toZWFkKytdXT0wOwogICAgICAgIGFjdGl2ZVtwb3NbaGVhZF1dPTA7CgogICAgICAgIGZbaV09ZltqXStzdFtoZWFkXTsKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkKICAgICAgICB7CiAgICAgICAgICAgIHBhaXIgPGxvbmcgbG9uZyxpbnQ+IHU9cS50b3AoKTsKICAgICAgICAgICAgaWYgKCFhY3RpdmVbdS5zZWNvbmRdKSBxLnBvcCgpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZbaV09bWluKGZbaV0sLXUuZmlyc3QpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHRhaWw+aGVhZCkKICAgICAgICB7CiAgICAgICAgICAgIGZbaV09bWluKGZbaV0sZltwb3NbdGFpbC0xXV0rc3RbdGFpbF0pOwogICAgICAgICAgICBxLnB1c2gobWFrZV9wYWlyKC1mW3Bvc1t0YWlsLTFdXS1zdFt0YWlsXSxpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgcS5wdXNoKG1ha2VfcGFpcigwTEwsaSkpOwogICAgICAgIGFjdGl2ZVtpXT0xOwogICAgfQogICAgY291dCA8PCBmW25dIDw8IGVuZGw7Cn0K