#include<iostream>//T306865 一曲新词酒一杯 超时
#include<cstring>
using namespace std;
int o[200005],x[200005];//o为操作类型,x为被操作的酒号
bool a[200005];//a为表示酒是否被贴,1为已经被贴了,0表示还没别贴
int main(){
int t,n,m,mun,pan2=1;//mun表示还未被贴的酒的数量,pan2用来判断是否找到
cin>>t;
for(int tv=1;tv<=t;tv++){//第tv组数据的操作
cin>>n>>m;mun=n;
for(int i=1;i<=m;i++){
cin>>o[i]>>x[i];
}
for(int i=1;i<=m;i++){//i为操作次数
if(o[i]==1&&a[x[i]]==0){//情况为1
a[x[i]]=1;mun--;
}//贴这个
else if(o[i]==2){//情况为二
if(a[x[i]]==1){//已经贴过了 ,那就没有要贴的了。输出操作次数并跳出
cout<<i<<endl;pan2=0;break;
}
else {
memset(a,false,sizeof(a));
a[x[i]]=0;
mun=1;
}
}//贴除这个以外的
if(mun==0){//贴完了
cout<<i<<endl;pan2=0;break;
}
}
if(pan2==1){//如果是跳出来的,那就重置pan2
cout<<-1<<endl;
}
else {pan2=1;
}
memset(a,0,sizeof(a));//全部清0
memset(o,0,sizeof(o));
memset(x,0,sizeof(x));
}
return 0;
}