#include <bits/stdc++.h>
using namespace std;
int t,n;
long long m,tot,arr[100005];
int dp[100005][4],type[100005];
int main() {
scanf("%d",&t);
while (t--) {
scanf("%d%lld",&n,&m);
tot=0;
for (int i=1;i<=n;i++) {
scanf("%lld",&arr[i]);
if (arr[i]>m/arr[i]) {
if (arr[i]>=m/(m/arr[i])) {
type[i]=0;
tot+=arr[i];
}
else {
type[i]=2;
tot+=m/(m/arr[i]);
}
}
else if (arr[i]<m/arr[i]) {
type[i]=1;
tot+=m/arr[i];
}
else {
type[i]=-1;
tot+=arr[i];
}
}
for (int i=1;i<=n;i++) {
if (type[i]==0) {
dp[i][0]=dp[i-1][0];
dp[i][1]=min(min(dp[i-1][0],dp[i-1][1]),min(dp[i-1][2],dp[i-1][3]))+1;
dp[i][2]=min(dp[i-1][0],dp[i-1][2]);
dp[i][3]=min(dp[i-1][1],dp[i-1][3]);
}
else if (type[i]==1) {
dp[i][0]=min(dp[i-1][0],dp[i-1][1])+1;
dp[i][1]=min(min(dp[i-1][0],dp[i-1][1]),dp[i-1][2]+1);
dp[i][2]=dp[i-1][2]+1;
dp[i][3]=min(dp[i-1][1],dp[i-1][3])+1;
}
else if (type[i]==2) {
dp[i][0]=min(dp[i-1][0],dp[i-1][2])+2;
dp[i][1]=min(min(dp[i-1][0],dp[i-1][1]),min(dp[i-1][2],dp[i-1][3]))+1;
dp[i][2]=min(dp[i-1][0],dp[i-1][2]);
dp[i][3]=min(dp[i-1][1],dp[i-1][3])+2;
}
else {
dp[i][0]=min(dp[i-1][0],dp[i-1][1]+1);
dp[i][1]=min(min(dp[i-1][0],dp[i-1][1]),min(dp[i-1][2],dp[i-1][3])+1);
dp[i][2]=dp[i-1][2];
dp[i][3]=min(dp[i-1][1],dp[i-1][3]);
}
}
printf("%lld %d\n",tot,min(min(dp[n][0],dp[n][1]+1),min(dp[n][2]+2,dp[n][3]+1)));
}
}