#include #define ll long long #define fr first #define sc second #define NN ((ll)(4e5+100)) #define N ((ll)(1e6+100)) #define ARRS ((ll)(1e6+100)) #define EP ((1.0e-3)) #define M ((ll)(1e9+7)) #define MOD ((ll)(1e9+7)) #define MAX ((ll)(1e12+7)) #define pb push_back #define inf ((ll)1e16) #define PI 3.14159265358979323846 using namespace std; char c[ARRS]; ll l[ARRS]; ll r[ARRS]; ll dp[ARRS]; ll f[ARRS]; ll s[ARRS][2]; vector > g[ARRS]; const int MAXN = (1 << 18); template struct fenwick { int sz; T tr[MAXN]; void init(int n) { sz = n + 1; memset(tr, 0, sizeof(tr)); } T query(int idx) { T ans = 0; for(; idx >= 1; idx -= (idx & -idx)) ans += tr[idx]; return ans; } void update(int idx, T val) { if(idx <= 0) return; for(; idx <= sz; idx += (idx & -idx)) tr[idx] += val; } T query(int l, int r) { return query(r) - query(l - 1); } }; int main(){ ll q,m,n,n1,n2; //ios::sync_with_stdio(0); cin>>q; fenwick fw[2]; while(q--){ cin>>m>>n; fw[0].init(max(m,n)+10); fw[1].init(max(m,n)+10); for(int i=0; i<=max(n,m)+100; i++){ s[i][0]=0; s[i][1]=0; g[i].clear(); f[i]=0; dp[i]=0; } for(int i=0; i>c[i]; //cout<>l[i]; for(int i=0; i>r[i]; for(int i=0; i st[2]; for(int i=1; i<=m; i++){ dp[i]=dp[i-1]; st[0].insert(i-1); st[1].insert(i-1); for(auto x:g[i]){ ll c=x.fr,l=x.sc; fw[c].update(l,1); ll k; auto it=st[c].upper_bound(l); if(it!=st[c].begin()){ it--; k=*it; if(dp[k]+fw[c].query(k,i) v; for(int i=n; i>=1; i--){ if(f[i]&&pas==-1)pas=f[i]; if(f[i])pas=min(pas,f[i]); v.pb(pas); } reverse(v.begin(),v.end()); for(auto x:v)cout<