#include #include #include #include #include #include #include #include #include #include using namespace std; const int maxv=101000; const long long mod=998244353; const int maxNum=0x7fffffff-10; const double eps=1e-11; const double PI=3.1415926535; typedef long long LL; LL a[maxv]; inline LL read(){ LL x=0; char ch=getchar(); while(ch<'0'||ch>'9'){ ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x; } inline void write(LL x) { if(!x) putchar('0'); char F[200]; LL tmp=x>0?x:-x ; if(x<0)putchar('-') ; int cnt=0 ; while(tmp>0) { F[cnt++]=tmp%10+'0'; tmp/=10; } while(cnt>0)putchar(F[--cnt]) ; putchar('\n'); } int main(){ int t,flag,n; LL sum1,sum2,m,minSum,sumAll,sum3; scanf("%d",&t); while(t--){ sum1=sum2=sumAll=sum3=flag=0,minSum=maxNum; scanf("%d %lld",&n,&m); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sumAll+=a[i]; for(int i=n;i>=1;i--) sum3+=a[i],minSum=min(sum3,minSum); for(int i=1;i<=n;i++){ sum1+=a[i]; if(sum1<0) sum1=0; if(sum1>=m){write(1);flag=1;break;} } if(flag) continue; sum2=sum1; for(int i=1;i<=n;i++){ sum2+=a[i]; if(sum2<0) sum2=0; if(sum2>=m){write(2);flag=1;break;} } if(flag) continue; if(sum2==sum1){write(-1);continue;} if(minSum<0) m+=minSum; write(1+(m-sum1+sumAll-1)/sumAll); } return 0; }