#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 20
using namespace std;
const double eps=1e-8;
int T,m,n;
double x[M],y[M];
int dp[1<<20];
int L[M][M];
bool Equ(double x,double y){
double tmp=fabs(x-y);
if(tmp<=eps)
return true;
else return false;
}
void Getline(double &rx,double &ry,int i,int j){
double a1=x[i]*x[i],b1=x[i],c1=y[i];
double a2=x[j]*x[j],b2=x[j],c2=y[j];
ry=(c1*a2-c2*a1)/(b1*a2-b2*a1);
rx=(c1-b1*ry)/a1;
}
bool Online(int yyc,double a,double b){
double xi=x[yyc],yi=y[yyc];
if(Equ(yi,a*xi*xi+b*xi))
return true;
return false;
}
int main(){
scanf("%d",&T);
while(T--){
memset(L,0,sizeof(L));
memset(dp,0x3f3f3f3f,sizeof(dp));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%lf%lf",&x[i],&y[i]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
if(Equ(x[i],x[j])) continue;
double a,b;
Getline(a,b,i,j);
if(a>-eps) continue;
for(int k=0;k<n;k++)
if(Online(k,a,b)) L[i][j]|=(1<<k);
}
dp[0]=0;
for(int i=0;i<(1<<n);i++)
for(int j=0;j<n;j++){
dp[i|(1<<j)]=min(dp[i|(1<<j)],dp[i]+1);
for(int k=0;k<n;k++) dp[i|L[j][k]]=min(dp[i|L[j][k]],dp[i]+1);
}
printf("%d\n",dp[(1<<n)-1]);
}
return 0;
}