/*
题目大意:
有n个问题,,告诉你答对该题能得多少分,其中一个人随机答题,问另一个人不输的概率为p
至少需要答多多少分
对于样例:
3 0.5
1 2 3
分析:
分数 0 1 2 3 3 4 5 6
次数 1 1 1 2 1 1 1 1
位置 1 2 3 4 5 6 7 8
不输的概率为0.5 那么对应的位置为0.5*2^n=0.5*8=5
因此对应的分数是3
*/
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define LL long long
#define MAX 40000+5
int n,a[MAX];
double p;
int dp[MAX];//dp[i]代表分数i出现的次数
int main()
{
freopen("in.txt","r",stdin);
int T;
cin>>T;
while(T--)
{
scanf("%d%lf",&n,&p);
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
dp[0]=1;
for(int i=1;i<=n;i++)
for(int j=MAX;j>=a[i];j--)//从大到小,不然就重复更新了,因为是用小的更新大的
dp[j] += dp[j-a[i]];
LL sum = 1LL<<n;//注意1LL否则爆int
LL cnt = sum*p;
if(sum*p-cnt)
cnt+=1;
LL num=0;
for(int j=0;j<MAX;j++)
{
num+=dp[j];
if(num>=cnt)
{
printf("%d\n",j);
break;
}
}
}
return 0;
}