import java.io.*; import java.util.*; import java.math.*; import java.util.concurrent.*; public final class animal_transport { static BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); static FastScanner sc=new FastScanner(br); static PrintWriter out=new PrintWriter(System.out); static Random rnd=new Random(); static ArrayList[] events; static int[][] tree,lazy; static void point_update(int node,int s,int e,int l,int r,int idx,int val) { if(s>e || l>e || r>1; point_update(node<<1,s,mid,l,r,idx,val);point_update(node<<1|1,mid+1,e,l,r,idx,val); tree[idx][node]=Math.max(tree[idx][node<<1],tree[idx][node<<1|1]); } } static void range_update(int node,int s,int e,int l,int r,int idx,int val) { if(lazy[idx][node]!=0) { tree[idx][node]+=lazy[idx][node]; if(s!=e) { lazy[idx][node<<1]+=lazy[idx][node]; lazy[idx][node<<1|1]+=lazy[idx][node]; } lazy[idx][node]=0; } if(s>e || l>e || r=e) { tree[idx][node]+=val; if(s!=e) { lazy[idx][node<<1]+=val;lazy[idx][node<<1|1]+=val; } } else { int mid=(s+e)>>1; range_update(node<<1,s,mid,l,r,idx,val);range_update(node<<1|1,mid+1,e,l,r,idx,val); tree[idx][node]=Math.max(tree[idx][node<<1],tree[idx][node<<1|1]); } } static int query(int node,int s,int e,int l,int r,int idx) { if(lazy[idx][node]!=0) { tree[idx][node]+=lazy[idx][node]; if(s!=e) { lazy[idx][node<<1]+=lazy[idx][node]; lazy[idx][node<<1|1]+=lazy[idx][node]; } lazy[idx][node]=0; } if(s>e || l>e || r=e) { return tree[idx][node]; } else { int mid=(s+e)>>1; return Math.max(query(node<<1,s,mid,l,r,idx),query(node<<1|1,mid+1,e,l,r,idx)); } } @SuppressWarnings("unchecked") public static void main(String args[]) throws Exception { int t=sc.nextInt(); while(t>0) { int m=sc.nextInt(),n=sc.nextInt();int[] type=new int[n],a=new int[n],b=new int[n]; for(int i=0;i(); } for(int i=0;i=0;i--) { res[i]=Math.min(res[i],res[i+1]); } for(int i=1;i<=n;i++) { int ans=res[i]