https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b7Yf6ABcBBASw
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
static int answer;
public static void dfs(int total, int now, int[] arr, int b){
if(total>=b){
answer=Math.min(total-b,answer);
}else{
for(int i=now+1;i<arr.length;i++){
dfs(total+arr[i],i,arr,b);
}
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int tc=sc.nextInt();
for(int i=1;i<=tc;i++){
answer=Integer.MAX_VALUE;
int n=sc.nextInt();
int b=sc.nextInt();
int[] arr=new int[n];
for(int j=0;j<n;j++){
arr[j]=sc.nextInt();
}
Arrays.sort(arr);
for(int j=0;j<n;j++){
int total=arr[j];
dfs(total,j,arr,b);
}
System.out.printf("#%d %d\n",i,answer);
}
}
}
def dfs(total,now):
global answer
if total>=b:
answer=min(answer,total-b)
else:
for i in range(now+1,n):
dfs(total+arr[i],i)
for tc in range(int(input())):
n,b=map(int,input().split())
arr=list(map(int,input().split()))
arr.sort()
answer=sum(arr)
for i in range(len(arr)):
total=arr[i]
dfs(total,i)
print("#"+str(tc+1)+" "+str(answer))