#include<cstdio> #include<algorithm> #define U_(i,a,b) for(int i=a;i<=b;i++) using namespace std; int s[14],ans; int t,n; void dfs(int now){ if(now>=ans)return; int r=0,a=0,b=0; U_(i,0,13)if(s[i]==1)a++; U_(i,0,13)if(s[i]==2)b++; U_(i,0,13)if(s[i]==4){ r++; if(a>=2)a-=2;else if(b>=2)b-=2;else if(b>=1)b--; } U_(i,0,13)if(s[i]==3){ r++; if(a>=1)a--;else if(b>=1)b--; } ans=min(ans,now+r+a+b); int j; U_(i,0,7){ for(j=i;j<12;j++){ s[j]--; if(s[j]<0)break; if(j-i>=4)dfs(now+1); } if(j==12)j--; while(j>=i)s[j--]++; } U_(i,0,9){ for(j=i;j<12;j++){ s[j]-=2; if(s[j]<0)break; if(j-i>=2)dfs(now+1); } if(j==12)j--; while(j>=i)s[j--]+=2; } U_(i,0,10){ for(j=i;j<12;j++){ s[j]-=3; if(s[j]<0)break; if(j-i>=1)dfs(now+1); } if(j==12)j--; while(j>=i)s[j--]+=3; } } int main(){ scanf("%d%d",&t,&n); while(t--){ ans=100000; int a,b; U_(i,0,13)s[i]=0; U_(i,1,n){ scanf("%d%d",&a,&b); if(a==1)s[11]++;else if(a==2)s[12]++;else if(a==0)s[13]++;else s[a-3]++; } dfs(0); printf("%d\n",ans); } return 0; }