#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,s[20],minn=300;
void dfs(int x,int remain,int now){
if(x>minn){
return;
}
if(remain==0){
minn=min(minn,x);
return;
}
if(!s[now]){
dfs(x,remain,now+1);
return;
}
if(now==14){
if(s[15]&&s[14]){
s[15]--;
s[14]--;
dfs(x+1,remain-2,now);
s[15]++;
s[14]++;
}
else{
s[14]--;
dfs(x+1,remain-1,now);
s[14]++;
}
return;
}
if(now==15){
s[15]--;
dfs(x+1,remain-1,now);
s[15]++;
return;
}
if(s[now]>=4){
for(int i=now;i<=13;i++){
if(i==now){
if(s[i]<6){
continue;
}
}
for(int j=i;j<=13;j++){
if(j==now){
if(i==now){
if(s[i]<8){
continue;
}
}
else{
if(s[i]<6){
continue;
}
}
}
if(i==j&&s[i]>=4||i!=j&&s[i]>=2&&s[j]>=2){
s[i]-=2;
s[j]-=2;
s[now]-=4;
dfs(x+1,remain-8,now);
s[i]+=2;
s[j]+=2;
s[now]+=4;
}
}
}
for(int i=now;i<=15;i++){
if(i==now){
if(s[i]<5){
continue;
}
}
for(int j=i;j<=15;j++){
if(j==now){
if(i==now){
if(s[i]<6){
continue;
}
}
else{
if(s[i]<5){
continue;
}
}
}
if(i==j&&s[i]>=2||i!=j&&s[i]>=1&&s[j]>=1){
s[i]--;
s[j]--;
s[now]-=4;
dfs(x+1,remain-6,now);
s[i]++;
s[j]++;
s[now]+=4;
}
}
}
s[now]-=4;
dfs(x+1,remain-4,now);
s[now]+=4;
}
if(s[now]>=3){
int r=now+1;
for(;r<=12;r++){
if(s[r]<3){
break;
}
}
r--;
if(r-now>=1){
for(int i=r;i>=now+1;i--){
for(int j=now;j<=i;j++){
s[j]-=3;
}
dfs(x+1,remain-(i-now+1)*3,now);
for(int j=now;j<=i;j++){
s[j]+=3;
}
}
}
for(int i=now;i<=13;i++){
if(i!=now&&s[i]>=2||i==now&&s[i]>=5){
s[i]-=2;
s[now]-=3;
dfs(x+1,remain-5,now);
s[i]+=2;
s[now]+=3;
}
}
for(int i=now;i<=15;i++){
if(i!=now&&s[i]>=1||i==now&&s[i]>=4){
s[i]-=1;
s[now]-=3;
dfs(x+1,remain-4,now);
s[i]+=1;
s[now]+=3;
}
}
s[now]-=3;
dfs(x+1,remain-3,now);
s[now]+=3;
}
if(s[now]>=2){
int r=now+1;
for(;r<=12;r++){
if(s[r]<2){
break;
}
}
r--;
if(r-now>=2){
for(int i=r;i>=now+2;i--){
for(int j=now;j<=i;j++){
s[j]-=2;
}
dfs(x+1,remain-(i-now+1)*2,now);
for(int j=now;j<=i;j++){
s[j]+=2;
}
}
}
for(int i=now+1;i<=13;i++){
for(int j=now+1;j<=13;j++){
if(i==j&&s[i]>=6||i!=j&&s[i]>=4&&s[j]>=2){
s[i]-=4;
s[j]-=2;
s[now]-=2;
dfs(x+1,remain-8,now);
s[i]+=4;
s[j]+=2;
s[now]+=2;
}
}
}
for(int i=now+1;i<=13;i++){
if(s[i]>=3){
s[i]-=3;
s[now]-=2;
dfs(x+1,remain-5,now);
s[i]+=3;
s[now]+=2;
}
}
s[now]-=2;
dfs(x+1,remain-2,now);
s[now]+=2;
}
if(s[now]>=1){
int r=now+1;
for(;r<=12;r++){
if(s[r]<1){
break;
}
}
r--;
if(r-now>=4){
for(int i=r;i>=now+4;i--){
for(int j=now;j<=i;j++){
s[j]--;
}
dfs(x+1,remain-(i-now+1),now);
for(int j=now;j<=i;j++){
s[j]++;
}
}
}
for(int i=now+1;i<=15;i++){
for(int j=now+1;j<=15;j++){
if(i==j&&s[i]>=5||i!=j&&s[i]>=4&&s[j]>=1){
s[i]-=4;
s[j]--;
s[now]--;
dfs(x+1,remain-6,now);
s[i]+=4;
s[j]++;
s[now]++;
}
}
}
for(int i=now+1;i<=15;i++){
if(s[i]>=3){
s[i]-=3;
s[now]--;
dfs(x+1,remain-4,now);
s[i]+=3;
s[now]++;
}
}
s[now]--;
dfs(x+1,remain-1,now);
s[now]++;
}
}
signed main(){
scanf("%lld %lld",&t,&n);
while(t--){
minn=300;
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++){
int color,digit;
scanf("%lld %lld",&digit,&color);
switch(digit){
case 0:digit+=(color+13);break;
case 1:case 2:digit+=11;break;
default:digit-=2;break;
}
s[digit]++;
}
dfs(0,n,1);
printf("%lld\n",minn);
}
return 0;
}