#include using namespace std; typedef long long ll; typedef pair pii; const int N = 1e5+10; const ll INF = 1e18; ll a[N]; int n; ll gao(ll cur) { ll ans = cur; for (int i = 1; i <= n; i++) { cur += a[i]; ans = max(cur, ans); cur = max(cur, 0LL); } return ans; } void check(ll cur) { for (int i = 1; i <= n; i++) { cur += a[i]; assert(cur >= 0); } } ll up(ll x, ll y) { return (x+y-1)/y; } void solve() { ll m; scanf("%d%lld", &n, &m); ll cur = 0; ll misum = 0, sum = 0; ll ma = -INF; bool ans = 0; for (int i = 1; i <= n; i++) { scanf("%lld", a+i); cur += a[i]; sum += a[i]; ma = max(ma, sum); if (cur >= m) { // printf("1\n"); ans = 1; } if (cur < 0) { misum += cur; } cur = max(cur, 0LL); } if (ans) { printf("1\n"); return ; } if (gao(cur) >= m) { printf("2\n"); return ; } if (cur + misum <= 0) { printf("-1\n"); return ; } check(cur+sum); assert(m > cur + ma); assert(cur > 0 && ma > 0 && sum > 0); ll t = m-ma-cur+sum; ll round = up(t, sum); // if (cur+sum*(round-1) >= m) round--; printf("%lld\n", round+1); } int main() { int T = 1; scanf("%d", &T); while (T--) solve(); return 0; }