#include #define ll long long #define N 100005 using namespace std; int T; int n; ll m, a[N], ans, x, x2, maxx; ll solve() { scanf("%d%lld", &n, &m); for (int i = 1; i <= n; ++i) { scanf("%lld", &a[i]); } x = 0; for (int i = 1; i <= n; ++i) { x += a[i]; if (x < 0) x = 0; if (x >= m) return 1; } x2 = x; maxx = x; for (int i = 1; i <= n; ++i) { x2 += a[i]; if (x2 < 0) x2 = 0; maxx = max(maxx, x2); if (x2 >= m) return 2; } if (x2 == x) return -1; ans = (m - maxx) / (x2 - x) * 1ll + 1ll; x2 += (ans - 3) * (x2 - x); //printf("x=%lld x2=%lld maxx=%lld ans=%lld\n", x, x2, maxx, ans); for (int i = 1; i <= n; ++i) { x2 += a[i]; if (x2 < 0) x2 = 0; if (x2 >= m) { //printf("hello1\n"); return ans; } } //printf("ans=%lld x2=%lld", ans, x2); ++ans; for (int i = 1; i <= n; ++i) { x2 += a[i]; if (x2 < 0) x2 = 0; if (x2 >= m) { //printf("hello2\n"); return ans; } } //printf("ans=%lld x2=%lld", ans, x2); ++ans; for (int i = 1; i <= n; ++i) { x2 += a[i]; if (x2 < 0) x2 = 0; if (x2 >= m) { //printf("hello3\n"); return ans; } } //printf("ans=%lld x2=%lld", ans, x2); ++ans; for (int i = 1; i <= n; ++i) { x2 += a[i]; if (x2 < 0) x2 = 0; if (x2 >= m) { //printf("hello4\n"); return ans; } } //printf("ans=%lld x2=%lld", ans, x2); return ans; } int main() { scanf("%d", &T); while (T--) { printf("%lld\n", solve()); } }