#include<bits/stdc++.h>
using namespace std;
int t,n;
int num[50];
int ans = 100;
void dfs(int step){
if(step>=ans){
return;
}
int k1=0;
int k2=0;
int k3=0;
for(int i=3; i <= 14; i++) {
if (num[i] == 0) k1 = 0;
else {
k1++;
if (k1 >= 5) {
for (int j = i; j >= i - k1 + 1; j--)
num[j]--;
dfs(step + 1);
for (int j = i; j >= i - k1 + 1; j--)
num[j]++;
}
}
if (num[i] < 2) k2 = 0;
else {
k2++;
if (k2 >= 3) {
for (int j = i; j >= i - k2 + 1; j--)
num[j] -= 2;
dfs(step + 1);
for (int j = i; j >= i - k2 + 1; j--)
num[j] += 2;
}
}
if (num[i] < 3) k3 = 0;
else {
k3++;
if (k3 >= 2) {
for (int j = i; j >= i - k3 + 1; j--)
num[j] -= 3;
dfs(step + 1);
for (int j = i; j >= i - k3 + 1; j--)
num[j] += 3;
}
}
}
for (int i = 2; i <= 14; i++) {
if (num[i] >= 3) {
num[i] -= 3;
for (int j = 2; j <= 15; j++) {
if (num[j] && i != j) {
num[j]--;
dfs(step + 1);
num[j]++;
}
if (num[j] >= 2 && i != j && j!=15) {
num[j] -= 2;
dfs(step + 1);
num[j] += 2;
}
}
num[i]+=3;
}
if (num[i] >= 4) {
num[i] -= 4;
for (int j = 2; j <= 15; j++) {
if (num[j] && j!=i) {
num[j]--;
for (int k = 2; k <= 15; k++) {
if (num[k] && k!=j) {
num[k]--;
dfs(step + 1);
num[k]++;
}
}
num[j]++;
}
}
for (int j = 2; j <= 14; j++) {
if (num[j] >= 2 && j!=i) {
num[j] -= 2;
for (int k = 2; k <= 14; k++) {
if (num[k] >= 2) {
num[k] -= 2;
dfs(step + 1);
num[k] += 2;
}
}
num[j] += 2;
}
}
num[i]+=4;
}
}
for(int i = 2;i<=15;i++){
if(num[i]){
step++;
}
}
ans = min(ans,step);
}
int main() {
cin >> t >> n;
while (t--) {
ans = 100;
memset(num,0,sizeof num);
for (int i = 1; i <= n; i++) {
int x,y;
scanf("%d%d", &x, &y);
if (x== 0) num[15]++;
else if (x == 1) num[14]++;
else num[x]++;
}
dfs(0);
printf("%d\n",ans);
}
return 0;
}