#include using namespace std; typedef long long ll; const int maxl=3e5+10; int n,k,cnt,tot,cas; ll m,a[maxl],si,sum[maxl],ans,mx; char s[maxl]; inline void prework() { scanf("%d%lld",&n,&m); mx=0; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]),sum[i]=sum[i-1]+a[i]; mx=max(mx,sum[i]); } } inline void mainwork() { if(sum[n]<=0) { ll now=0; for(int k=1;k<=3;k++) { for(int i=1;i<=n;i++) { now+=a[i]; if(now<0) now=0; if(now>=m) { ans=k; return; } } } ans=-1; return; } ll now=0; for(k=1;k;k++) { bool flag=false; for(int i=1;i<=n;i++) { now+=a[i]; if(now<0) now=0,flag=true; if(now>=m) { ans=k; return; } } if(!flag) break; } ll d=0;__int128 o=1; for(ll i=61;i>=0;i--) if(now+o*sum[n]*(d+(1ll<=m) { ans=k+d+c; return; } } } } inline void print() { printf("%lld\n",ans); } int main() { int t=1; scanf("%d",&t); for(cas=1;cas<=t;cas++) { prework(); mainwork(); print(); } return 0; }