#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define ff first
#define ss second
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair<ll,ll> pll;
const ll sz=2e5+100;
const ll mod=1e9+7;
const ll inf=1e17;
const ll lg=40;
template<class T>
using indexed_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long arr[sz];
void solve(){
    ll n,m;
    cin>>n>>m;
    for(ll i=0;i<n;i++) cin>>arr[i];
    vector<long long> pref(n),prefmx(n);
    pref[0]=prefmx[0]=arr[0];
    for(ll i=1;i<n;i++){
        pref[i]=pref[i-1]+arr[i];
        prefmx[i]=max(pref[i],prefmx[i-1]);
    }
    while(m--){
        ll x;
        cin>>x;
        if(prefmx[n-1]>=x){
            cout<<lower_bound(all(prefmx),x)-prefmx.begin()<<' ';
            continue;
        }
        if(pref[n-1]<=0){
            cout<<"-1 ";
            continue;
        }
        ll k=(x-prefmx[n-1]+pref[n-1]-1)/pref[n-1];
        ll d=x-k*pref[n-1];
        ll idx=lower_bound(all(prefmx),d)-prefmx.begin();
        cout<<k*n+idx<<' ';
    }
    cout<<'\n';
}
int main(){
    //freopen("sleepy.in","r",stdin);
    //freopen("sleepy.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    long long t=1;
    cin>>t;
    for(ll _=1;_<=t;_++){
        //cout<<"Scenario #"<<_<<":\n";
        solve();
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |