#include<bits/stdc++.h>
using namespace std;
long long pre,lg[100010],dp[100010],sum,n,m,a[100010],f[100010][20],q[100010];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
f[i][0]=a[i];
if(a[i]>m)
{
cout<<"-1";
return 0;
}
}
dp[1]=a[1];
for(int i=2;i<=n;i++)
lg[i]=lg[i>>1]+1;
for(int i=1;(1<<i)<=n;i++)
for(int j=1;j+(1<<i)-1<=n;j++)
f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
for(int i=1;i<=n;i++)
{
sum+=a[i];
while(sum>m)
sum-=a[++pre];
int x=pre+1,y=i;
dp[i]=min(dp[i],dp[pre]+max(f[x][lg[y-x+1]],f[y-(1<<lg[y-x+1])+1][lg[y-x+1]]));
}
cout<<dp[n];
}