#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; #define int long long const int maxn = 1e5 + 7; const int INF = (1ll << 63) - 1; const int mod = 998244353; int arr[maxn], pre[maxn], c[maxn]; void work() { int n, m; cin >> n >> m; ll sum = 0; for (int i = 1; i <= n; ++i) { cin >> arr[i]; sum += arr[i]; pre[i] = arr[i]; } for (int i = 1; i <= n; ++i) { pre[i] += pre[i - 1]; if (pre[i] < 0)pre[i] = 0; if (pre[i] >= m) { cout << 1 << '\n'; return; } } for (int i = 1; i <= n; ++i) { c[i] = arr[i]; c[i] += c[i - 1]; } ll x = pre[n]; for (int i = 1; i <= n; ++i) { x += arr[i]; if (x < 0)x = 0; if (x >= m) { cout << 2 << '\n'; return; } } if (x == pre[n]) { cout << -1 << '\n'; return; } ll mn = INF; for (int i = 1; i <= n; ++i) { mn = min(mn, m - x - c[i]); } ll cnt = 2; ll d = mn / sum; cnt += d; if (d * sum + x >= m) { cout << cnt << '\n'; return; } ll sum1 = d * sum + x; for (int k = 1;; ++k) { for (int i = 1; i <= n; ++i) { sum1 += arr[i]; if (sum1 >= m) { cout << cnt + k << '\n'; return; } } } } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; cin >> T; for (int i = 1; i <= T; ++i) { // cout << "Case #" << i << ": "; work(); } }