#include #include using namespace std; long long n , m; long long a[120000]; long long f; long long mx; void clear () { f = mx = 0; } long long go ( long long x ) { long long i; for ( i = 1 ; i <= n ; i++ ) { x += a[i]; mx = max ( mx , x ); if ( x < 0 ) x = 0; if ( x >= m ) { f = 1; } } return x; } void work () { long long i , x0 , x1 , x2; scanf ( "%lld%lld" , &n , &m ); for ( i = 1 ; i <= n ; i++ ) { scanf ( "%lld" , &a[i] ); } f = 0; x0 = go ( 0 ); if ( f ) { printf ( "1\n" ); return ; } x1 = go ( x0 ); if ( f ) { printf ( "2\n" ); return ; } //printf ( "%d %d\n" , x0 , x1 ); if ( x1 == x0 ) { printf ( "-1\n" ); return ; } x2 = go ( x1 ); if ( f ) { printf ( "3\n" ); return ; } printf ( "%lld\n" , 3 + (m-mx-1) / (x2-x1) + 1 ); } int main () { int t; scanf ( "%d" , &t ); while ( t-- ) { work (); clear (); } return 0; }