#include <bits/stdc++.h>
using namespace std;
int card[20];
int ans=1e9;
void dfs(int step,int num){
if(step>=ans)return;
if(num<=0){
ans=min(step,ans);
return;
}
for(int i=0;i<=13;i++){
if(card[i]>=4){
card[i]-=4;
for(int j=0;j<=13;j++){
if(card[j]>=2)
card[j]-=2;
for(int k=0;k<=13;k++){
if(card[k]>=2){
card[k]-=2;
dfs(num+1,num-8);
card[k]+=2;
}
}
card[j]+=2;
}
}
card[i]+=4;
}
for(int i=0;i<=13;i++){
if(card[i]>=4)
card[i]-=4;
for(int j=0;j<=13;j++){
if(card[j]>=1)
card[j]-=1;
for(int k=0;k<=13;k++){
if(card[k]>=1){
card[k]-=1;
dfs(num+1,num-6);
card[k]+=1;
}
}
card[j]+=1;
}
card[i]+=4;
}
for(int i=1;i<=11;i++){
if(card[i]>=3){
card[i]-=3;
int cnt=1;
for(int j=i+1;j<=12;j++){
if(!card[j])break;
cnt++;
card[j]-=3;
if(cnt>=2) dfs(step+1,num-2*cnt);
}
for(int i=1;i<=i+cnt-1;i++){
card[i]+=2;
}
}
}
for(int i=1;i<=10;i++){
if(card[i]>=2){
card[i]-=2;
int cnt=1;
for(int j=i+1;j<=12;j++){
if(!card[j])break;
cnt++;
card[j]-=2;
if(cnt>=3) dfs(step+1,num-2*cnt);
}
for(int i=1;i<=i+cnt-1;i++){
card[i]+=2;
}
}
}
for(int i=1;i<=8;i++){
if(card[i]){
card[i]--;
int cnt=1;
for(int j=i+1;j<=12;j++){
if(!card[j])break;
cnt++;
card[j]--;
if(cnt>=5) dfs(step+1,num-cnt);
}
for(int i=1;i<=i+cnt-1;i++){
card[i]++;
}
}
}
for(int i=0;i<=13;i++){
if(card[i]>=3)
card[i]-=3;
for(int j=0;j<=13;j++){
if(card[j]>=2){
card[j]-=2;
dfs(step+1,num-5);
card[j]+=2;
}
}
card[i]+=3;
}
for(int i=0;i<=13;i++){
if(card[i]>=3)
card[i]-=3;
for(int j=0;j<=13;j++){
if(card[j]>=1){
card[j]-=1;
dfs(step+1,num-4);
card[j]+=1;
}
}
card[i]+=3;
}
int cc=0,cnt=0;
for(int i=1;i<=13;i++){
if(card[i]){
cc++;
cnt+=card[i];
}
}
dfs(step+cc,num-cnt);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,T;
cin>>T>>n;
while(T--){
for(int j=1;j<=n;j++) card[j]=0;
for(int i=1;i<=n;i++){
int a,b;
cin>>a>>b;
if(a>=3)a-=2;
else if(a==1)a=12;
else if(a==2)a=13;
card[a]++;
}
ans=1e9;
dfs(0,n);
cout<<ans<<'\n';
}
}