#include<iostream>
#include<stdio.h>
using namespace std;
int snum,rpos,minp,spo;
int spos[1000000];
void dfs(int sspos[1000000],int sspo,int ssnum,int power)
{
if(ssnum==0)
{
if(power<minp)
minp=power;
return;
}
if(power>minp)
return;
int left=-1,right=-1,lsteps=0,rsteps=0,lpower,rpower;
int leftsspo=sspo-1;
int rightsspo=sspo+1;
for(int i=leftsspo;i>=0;i--)
{
lsteps++;
if(sspos[i]==1)
{
left=i;
break;
}
}
if(left!=-1)
{
lpower=power+ssnum*lsteps;
sspos[left]=0;
dfs(sspos,left,ssnum-1,lpower);
sspos[left]=1;
}
for(int i=rightsspo;i<=20;i++)
{
rsteps++;
if(sspos[i]==1)
{
right=i;
break;
}
}
if(right!=-1)
{
rpower=power+ssnum*rsteps;
sspos[right]=0;
dfs(sspos,right,ssnum-1,rpower);
sspos[right]=1;
}
}
int main()
{
int T;
cin>>T;
for(int t=0;t<T;t++)
{
cin>>snum>>rpos;
for(int i=0;i<1000000;i++)
spos[i]=0;
minp = 1000;
for(int i=0;i<snum;i++)
{
cin>>spo;
spos[spo]=1;
}
dfs(spos,rpos,snum,0);
cout<<minp<<endl;
}
}
恩