#include using namespace std; typedef long long ll; typedef pair PII; const int maxn=111111,mod=998244353; #define fi first #define se second #define MP make_pair #define PB push_back #define lson o<<1,l,mid #define rson o<<1|1,mid+1,r #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline ll read(){ char ch=getchar();ll x=0,f=0; while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar(); return f?-x:x; } inline int qpow(int a,int b){ int ans=1; for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) ans=1ll*ans*a%mod; return ans; } int n,a[maxn]; ll m,c,d,l; void solve(){ n=read();m=read(); FOR(i,1,n) a[i]=read(); l=m;c=d=0; FOR(i,1,n){ c=max(0ll,c+a[i]); d+=a[i]; if(c>=m) l=min(l,0ll); else l=min(l,m-d); } if(l<=0) puts("1"); else{ ll x=max(c,d); if(l<=x) puts("2"); else{ if(max(c,x+d)<=x) puts("-1"); else printf("%lld\n",2+(l-x-1)/d+1);//除了第一轮需要再来 k 轮 +d 直到 l<=x 就再一轮 } } } int main(){ int T=read(); while(T--) solve(); }