#include<stdio.h>
#define maxn 50150
int ans,st,ed,num;
int t,k,n,f,q;
struct node
{
int sum,l,r;
int len()
{
return r-l+1;
}
int mid()
{
return (l+r)/2;
}
} tree[maxn*4];
void build(int root,int l,int r)
{
tree[root].l=l;
tree[root].r=r;
tree[root].sum=0;
if(l==r)return;
int mid=(l+r)/2;
build(root*2,l,mid);
build(root*2+1,mid+1,r);
}
void pushdown(int root)
{
if(tree[root].sum==0)
tree[root*2].sum=tree[root*2+1].sum=0;
if(tree[root].sum==tree[root].len())
{
tree[root*2].sum=tree[root*2].len();
tree[root*2+1].sum=tree[root*2+1].len();
}
}
void pushup(int root)
{
tree[root].sum=tree[root*2].sum+tree[root*2+1].sum;
}
void put(int root,int l,int r)
{
if(num==0||tree[root].sum==tree[root].len())
return;
if(tree[root].l==l&&tree[root].r==r&&num>=tree[root].len()&&tree[root].sum==0)
{
num-=tree[root].len();
tree[root].sum=tree[root].len();
if(st==-1)
st=tree[root].l;
ed=tree[root].r;
return ;
}
pushdown(root);
int mid=tree[root].mid();
if(r<=mid)
put(root*2,l,r);
else if(l>mid)
put(root*2+1,l,r);
else
{
put(root*2,l,mid);
put(root*2+1,mid+1,r);
}
pushup(root);
}
void cleard(int root,int l,int r)
{
if(tree[root].l==l&&tree[root].r==r)
{
ans+=tree[root].sum;
tree[root].sum=0;
return;
}
pushdown(root);
int mid=tree[root].mid();
if(r<=mid)
cleard(root*2,l,r);
else if(l>mid)
cleard(root*2+1,l,r);
else
{
cleard(root*2,l,mid);
cleard(root*2+1,mid+1,r);
}
pushup(root);
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&q);
build(1,1,n);
for(int i=0; i<q; i++)
{
scanf("%d",&k);
if(k==1)
{
st=ed=-1;
scanf("%d%d",&f,&num);
put(1,f+1,n);
if(st==-1)
printf("Can not put any one.\n");
else
printf("%d %d\n",st-1,ed-1);
}
else
{
ans=0;
scanf("%d%d",&f,&num);
cleard(1,f+1,num+1);
printf("%d\n",ans);
}
}
printf("\n");
}
return 0;
}