#include typedef long long ll; typedef std::pair pii; const int N = 1e6 + 10; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; const double eps = 1e-9; ll a[N], sum[N]; int main() { std::ios::sync_with_stdio(0); std::cin.tie(0); #ifdef ONLINE_JUDGE #else freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t; std::cin >> t; while(t--) { ll n, k; std::cin >> n >> k; for(int i = 1; i <= n; i ++) { std::cin >> a[i]; a[i + n] = a[i]; } bool f = false; ll cnt = 0; ll max = 0; for(int i = 1; i <= n * 2; i++) { sum[i] = a[i] + sum[i - 1]; if(i <= n) max = std::max(max, sum[i]); cnt += a[i]; if(cnt < 0) cnt = 0; if(cnt >= k) { if(i > n) { std::cout << 2 << std::endl; } else std::cout << 1 << std::endl; f = true; } if(f) break; } if(f) continue; if(sum[n] <= 0) { std::cout << -1 << std::endl; continue; } ll x = 0; for(int i = 1; i <= n; i++) { x += a[i]; if(x < 0) x = 0; } //std::cout << x << ' ' << sum[n] << std::endl; k -= x; k -= max; //std::cout << k << std::endl; if(k <= 0) { std::cout << 2 << std::endl; continue; } k = (k + sum[n] - 1) / sum[n] + 2; std::cout << k << std::endl; } }