#include using namespace std; using ll=long long; const ll oo=~0uLL>>2; const int N=1e5+11; int n; ll m; int a[N]; ll sa[N],mn[N]; ll work(){ for(int i=1;i<=n;++i){ sa[i]=sa[i-1]+a[i]; } ll x=0; for(int i=1;i<=n;++i){ x+=a[i]; if(x>=m) return 1; if(x<0) x=0; } for(int i=1;i<=n;++i){ x+=a[i]; if(x>=m)return 2; if(x<0) x=0; } if(sa[n]<=0)return -1; mn[n+1]=oo; for(int i=n;i>=1;--i){ mn[i]=min(mn[i+1],sa[i]); } int k; for(k=1;k<=n;++k) if(sa[k-1] <= mn[k]) break; assert(k<=n); ll ans=(m+sa[n]-1)/sa[n]; x=0; for(int i=k;i<=n;++i){ x+=a[i]; ans=min(ans, 1 + (m-x+sa[n]-1) / sa[n]); } for(int i=1;i<=k;++i){ x+=a[i]; ans=min(ans, 2 + (m-x+sa[n]-1) / sa[n]); } return ans; } int main(){ #ifdef flukehn freopen("d.in","r",stdin); #endif ios::sync_with_stdio(0); cin.tie(0); int T; cin>>T; while(T--){ cin>>n>>m; for(int i=1;i<=n;++i){ cin>>a[i]; } cout<