#include #include #include #include #include #include #include #include #define LL long long #define LD long double #define MAXN 1000005 #define MAXM #define P #define MP make_pair #define PB push_back #define INF 0x3f3f3f3f #define dbg(a...) fprintf(stderr, a) using namespace std; int T, n; LL m, a[MAXN], pre[MAXN]; LL solve() { scanf("%d%lld", &n, &m); LL num=0, maxn=0; for(int i=1; i<=n; ++i) { scanf("%lld", &a[i]); pre[i]=pre[i-1]+a[i]; maxn=max(maxn, pre[i]); } for(int i=1; i<=3; ++i) { for(int j=1; j<=n; ++j) { num=max(num+a[j], (LL)0); if(num>=m) return i; } } if(num+maxn>=m) return 4; if(pre[n]<=0) return -1; m-=num; //printf("%d %d\n", m, m-maxn); return (m-maxn+pre[n]-1)/pre[n]+4; } int main() { scanf("%d", &T); while(T--) printf("%lld\n", solve()); return 0; }