#include using namespace std; long long read(){ long long tot=0,fh=1; char c=getchar(); while ((c<'0')||(c>'9')){ if (c=='-') fh=-1; c=getchar(); } while ((c>='0')&&(c<='9')){ tot=tot*10+c-'0'; c=getchar(); } return tot*fh; } int T,opt; long long n,m; const int maxn=100010; int i,j,k; long long a[maxn]; long long tot,thi,ans,mx,mxx; int main(){ T=read(); for (opt=1;opt<=T;opt++){ n=read(); m=read(); tot=0; for (i=1;i<=n;i++) a[i]=read(); for (i=1;i<=n;i++) tot=tot+a[i]; if (tot<=0){ thi=0; ans=0; for (i=1;i<=n;i++){ thi=thi+a[i]; if (thi<0) thi=0; if (thi>=m) ans=1; } if (ans==1){ printf("1\n"); continue; } for (i=1;i<=n;i++){ thi=thi+a[i]; if (thi<0) thi=0; if (thi>=m) ans=2; } if (ans==2){ printf("2\n"); continue; } printf("-1\n"); continue; } else{ thi=0; ans=0; for (i=1;i<=n;i++){ thi=thi+a[i]; if (thi<0) thi=0; if (thi>=m) ans=1; } if (ans==1){ printf("1\n"); continue; } mx=0; mxx=0; for (i=1;i<=n;i++){ mx=mx+a[i]; mxx=max(mx,mxx); } if (thi+mxx>=m){ printf("2\n"); continue; } ans=((m-thi-mxx-1)/tot)+1+2; printf("%lld\n",ans); } } return 0; }