#include <iostream>
#include <sstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cctype>
#include <string>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <unordered_map>
#include <limits.h>
#include <cassert>
#include <queue>
#include <stack>
#include <algorithm>
#include <functional>
#include <iomanip>
using namespace std;
//////////////////
// Aditya Kumar //
// BITS H //
//////////////////
#define mod 1000000007
#define ll long long
#define ss second
#define ff first
#define FastIO ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define int long long
#define pb push_back
int n , d;
int a[200040];
int brute()
{
int ans = 1e9;
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
int lol = 0;
int s=0;
for(int k=i;k<=j;k++)
{
lol ++;
s += a[k];
}
if(s >= d)
ans = min(ans, (lol));
}
}
if(ans == 1e9) ans = -1;
return ans;
}
int32_t main()
{
FastIO;
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int tc ; cin >> tc;
while(tc--)
{
cin >> n >> d;
for(int i=0;i<n;i++) {
cin >> a[i];
}
int dne = 0;
for(int i=0;i<n;i++) {
if(a[i] >= d)
{
cout << 1 << endl;
dne = 1;
break;
}
}
if(dne == 1) {
continue;
}
if(d <= 0)
{
cout << -1 << endl;
continue;
}
int ans = 200005;
int cs = 0;
int l = 0 ; int r = -1;
while( r < n-1){
while( cs < d && r < n-1)
{
r++;
cs += a[r];
if(cs <= 0)
{
l = r+1;
cs = 0;
}
}
if(cs >= d)
ans = min(ans, r-l+1);
while( (cs >= d && l <= r) || (a[l] <= 0 && l <=r))
{
cs -= a[l];
l++;
if(cs >=d ) ans = min(ans, r-l+1);
}
}
if(ans == 200005) ans = -1;
// assert(ans == brute());
cout << ans << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8bGltaXRzLmg+CiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLy8vLy8vLy8vLy8vLy8vLy8KLy8gQWRpdHlhIEt1bWFyIC8vCi8vICBCSVRTIEggICAgICAvLwovLy8vLy8vLy8vLy8vLy8vLy8KCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIEZhc3RJTyBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKCmludCBuICwgZDsgCmludCBhWzIwMDA0MF07IAppbnQgYnJ1dGUoKQp7CiAgICBpbnQgYW5zID0gMWU5OwogICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBmb3IoaW50IGo9aTtqPG47aisrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGxvbCA9IDA7CiAgICAgICAgICAgIGludCBzPTA7CiAgICAgICAgICAgIGZvcihpbnQgaz1pO2s8PWo7aysrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsb2wgKys7CiAgICAgICAgICAgICAgICBzICs9IGFba107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYocyA+PSBkKQogICAgICAgICAgICAgICAgYW5zID0gbWluKGFucywgKGxvbCkpOwogICAgICAgIH0KICAgIH0KICAgIGlmKGFucyA9PSAxZTkpIGFucyA9IC0xOwogICAgcmV0dXJuIGFuczsKfQoKaW50MzJfdCBtYWluKCkKewogICAgICAgIEZhc3RJTzsKICAgICAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgICAgIGZyZW9wZW4oImlucHV0LnR4dCIsInIiLHN0ZGluKTsgICAgCiAgICAgICAgZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiAgICAgICAgI2VuZGlmICAgIAogICAgICAgIGludCB0YyA7IGNpbiA+PiB0YzsgCiAgICAgICAgd2hpbGUodGMtLSkKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBuID4+IGQ7CiAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIHsKICAgICAgICAgICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCBkbmUgPSAwOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoYVtpXSA+PSBkKSAKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCAxIDw8IGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmUgID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihkbmUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZihkIDw9IDApCiAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY291dCA8PCAtMSA8PCBlbmRsOyAKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludCBhbnMgPSAyMDAwMDU7ICAKICAgICAgICAgICAgaW50IGNzID0gMDsKICAgICAgICAgICAgaW50IGwgPSAwIDsgaW50IHIgPSAtMTsKICAgICAgICAgICAgd2hpbGUoIHIgPCBuLTEpewogICAgICAgICAgICAgICAgd2hpbGUoIGNzIDwgZCAmJiByIDwgbi0xKQogICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICAgICAgY3MgKz0gYVtyXTsKICAgICAgICAgICAgICAgICAgICBpZihjcyA8PSAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHIrMTsKICAgICAgICAgICAgICAgICAgICAgICAgY3MgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKGNzID49IGQpCiAgICAgICAgICAgICAgICAgYW5zID0gbWluKGFucywgci1sKzEpOwogICAgICAgICAgICAgICAgd2hpbGUoIChjcyA+PSBkICYmIGwgPD0gcikgfHwgKGFbbF0gPD0gMCAmJiBsIDw9cikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY3MgLT0gYVtsXTsKICAgICAgICAgICAgICAgICAgICBsKys7ICAgIAogICAgICAgICAgICAgICAgICAgIGlmKGNzID49ZCApIGFucyA9IG1pbihhbnMsIHItbCsxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZihhbnMgPT0gMjAwMDA1KSBhbnMgPSAtMTsKICAgICAgICAgICAgLy8gYXNzZXJ0KGFucyA9PSBicnV0ZSgpKTsKICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgZW5kbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cgp9