#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = uint32_t; using namespace std; template constexpr T INF = ::numeric_limits::max() / 32 * 15 + 208; int main() { ll n, l; cin >> n >> l; l += l; vector v(n); for (int i = 1; i < n; ++i) { cin >> v[i]; v[i] += v[i]; if(abs(v[i]-v[i-1]) >= l){ puts("-1"); return 0; } } ll ans = n-1; ll s = 0; for (int i = n-1; i >= 1; --i) { s += v[i]; if(max(v[i-1], v[i])*(n-i) < s+l/2*(n-i) && s+l/2*(n-i) < min(v[i-1]+l, v[i]+l)*(n-i)){ ans--; } } cout << ans << "\n"; return 0; }