#include using namespace std; #define mp make_pair #define pb push_back #define x first #define y second typedef pair pii; typedef long long ll; typedef unsigned long long ull; template void chkmax(T &x,T y){x void chkmin(T &x,T y){y void readint(T &x) { x=0;int f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=x*10+(c-'0'); x*=f; } /*const int MOD=; inline int dmy(int x){return x>=MOD?x-MOD:x;} inline void inc(int &x,int y){x=dmy(x+y);} int qmi(int x,int y) { int ans=1; for(;y;y>>=1,x=1ll*x*x%MOD) if(y&1)ans=1ll*ans*x%MOD; return ans; }*/ const int MAXN=100005; int n,a[MAXN]; ll m; void solve() { readint(n),readint(m); for(int i=1;i<=n;++i)readint(a[i]); ll s=0; for(int i=1;i<=n;++i) { s+=a[i]; chkmax(s,0ll); if(s>=m){printf("1\n");return;} } ll t=s,x=0; for(int i=1;i<=n;++i) { s+=a[i]; chkmax(s,0ll); chkmax(x,s); if(s>=m){printf("2\n");return;} } if(t==s){printf("-1\n");return;} printf("%lld\n",(m-x+s-t-1)/(s-t)+2); } int main() { #ifdef LOCAL freopen("code.in","r",stdin); // freopen("code.out","w",stdout); #endif int T; readint(T); while(T--)solve(); return 0; }