#include #define debug(x) cerr<<"\tDEBUG: "<<#x<<" = "<<(x)<>=1; p=p*p%P; } return res; } int n; long long m; int A[maxn]; int main(){ // freopen("data.in","r",stdin); // freopen("std.out","w",stdout); int QuQ;cin>>QuQ; while(QuQ--){ cin>>n>>m; for(int i=1;i<=n;i++){ scanf("%d",&A[i]); } long long now=0,ans=-1; for(int i=1;i<=n;i++){ now+=A[i]; if(now<0)now=0; else if(now>=m){ ans=1; break; } } if(ans==1){ puts("1"); continue; } long long tmp=now; for(int i=1;i<=n;i++){ now+=A[i]; if(now<0)now=0; else if(now>=m){ ans=2; break; } } if(ans==2){ puts("2"); continue; } if(tmp==now){ puts("-1"); continue; } long long sum=0,Max=0; for(int i=1;i<=n;i++){ sum+=A[i]; Max=max(Max,sum); } //m=100, Max=10, now=8 , tmp=3 if(now+Max>=m){ puts("3"); continue; } ans=3+(m-Max-now)/(now-tmp)+((m-Max-now)%(now-tmp)!=0); cout<