#include<bits/stdc++.h>
#define eps 0.000001
using namespace std;
int t,n,m,ans,dp[1<<20];
double x[20],y[20];
inline int min_(int a,int b){
if(a>b) return b;
return a;
}
int dfs(int check){
if(check==((1<<n)-1)) return 0;
if(dp[check]!=INT_MAX) return dp[check];
for(int i=1,o;i<=n;i++)
if(!((check>>(i-1))&1)){
o=0;
for(int j=1;j<=n;j++)
if(i!=j && x[i]!=x[j] && !((check>>(j-1))&1)){
double a=(y[i]*x[j]-y[j]*x[i])/(x[i]*x[j]*(x[i]-x[j])),b=(y[i]-a*x[i]*x[i])/x[i];
if(a>=0) continue;
o=1;
int p=check,temp;
for(int k=1;k<=n;k++)
if(!((check>>(k-1))&1) && abs(a*x[k]*x[k]+b*x[k]-y[k])<eps)
check^=(1<<(k-1));
dp[check]=min_(dp[check],dfs(check)+1);
check=p;
}
if(!o) dp[check]=min_(dp[check],dfs(check^(1<<(i-1)))+1);
}
return dp[check];
}
int main(){
scanf("%d",&t);
for(int tt=1;tt<=t;tt++){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%lf%lf",&x[i],&y[i]);
for(int i=0;i<(1<<n);i++)
dp[i]=INT_MAX;
printf("%d\n",dfs(0));
}
return 0;
}
还望大佬不吝赐教!