import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef
{
private static int [] f;
{
// your code goes here
// arr = [1,1,1,1,1]
// ---> f[] = [0,5,9];
Scanner sc
=new Scanner
(System.
in); int t=sc.nextInt();
int j=1;
while(t-->0){
int n=sc.nextInt();
int k=sc.nextInt();
int [] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
int sum=solve(arr,k);
System.
out.
println("Case #"+j
+" : "+sum
); j++;
}
sc.close();
}
public static int solve(int []nums,int k){
int n=nums.length;
int maxSum=0;
for(int num : nums){
maxSum+=num;
}
f=new int[maxSum];
f[0]=0;
for(int i=1;i<f.length;i++){
f[i]=contiguousSubarray(nums,i)+f[i-1];
if(f[i]>k){
return i;
}else if(f[i]==k){
return i;
}
}
return -1;
}
public static int contiguousSubarray(int[] nums,int target) {
Map
<Integer, Integer
> map
= new HashMap
<>(); int sum = 0;
int count = 0;
map.put(0, 1);
for (int num : nums) {
sum += num;
int find=sum-target;
if (map.containsKey(find)) {
count += map.get(find);
}
map.put(sum, map.getOrDefault(sum, 0) + 1);
}
return count;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBDb2RlY2hlZgp7CiAgICBwcml2YXRlIHN0YXRpYyBpbnQgW10gZjsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQkvLyBhcnIgPSBbMSwxLDEsMSwxXQoJCS8vIC0tLT4gZltdID0gWzAsNSw5XTsKCQlTY2FubmVyIHNjPW5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJaW50IHQ9c2MubmV4dEludCgpOwoJCWludCBqPTE7CgkJd2hpbGUodC0tPjApewoJCSAgICBpbnQgbj1zYy5uZXh0SW50KCk7CgkJICAgIGludCBrPXNjLm5leHRJbnQoKTsKCQkgICAgaW50IFtdIGFycj1uZXcgaW50W25dOwoJCSAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkgICAgICAgIGFycltpXT1zYy5uZXh0SW50KCk7CgkJICAgIH0KCQkgICAgaW50IHN1bT1zb2x2ZShhcnIsayk7CgkJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FzZSAjIitqKyIgOiAiK3N1bSk7CgkJICAgIGorKzsKCQl9CgkJc2MuY2xvc2UoKTsKCX0KCQoJcHVibGljIHN0YXRpYyBpbnQgc29sdmUoaW50IFtdbnVtcyxpbnQgayl7CgkgICAgaW50IG49bnVtcy5sZW5ndGg7CgkgICAgaW50IG1heFN1bT0wOwoJICAgIGZvcihpbnQgbnVtIDogbnVtcyl7CgkgICAgICAgIG1heFN1bSs9bnVtOwoJICAgIH0KCSAgICBmPW5ldyBpbnRbbWF4U3VtXTsKCSAgICBmWzBdPTA7CgkgICAgZm9yKGludCBpPTE7aTxmLmxlbmd0aDtpKyspewoJICAgICAgICBmW2ldPWNvbnRpZ3VvdXNTdWJhcnJheShudW1zLGkpK2ZbaS0xXTsKCSAgICAgICAgaWYoZltpXT5rKXsKCSAgICAgICAgICAgIHJldHVybiBpOwoJICAgICAgICB9ZWxzZSBpZihmW2ldPT1rKXsKCSAgICAgICAgICAgIHJldHVybiBpOwoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiAtMTsKCSAgICAKCX0KCQoJcHVibGljIHN0YXRpYyBpbnQgY29udGlndW91c1N1YmFycmF5KGludFtdIG51bXMsaW50IHRhcmdldCkgewogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBtYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICBtYXAucHV0KDAsIDEpOwogCiAgICAgICAgZm9yIChpbnQgbnVtIDogbnVtcykgewogICAgICAgICAgICBzdW0gKz0gbnVtOwogICAgICAgICAgICBpbnQgZmluZD1zdW0tdGFyZ2V0OwogICAgICAgICAgICBpZiAobWFwLmNvbnRhaW5zS2V5KGZpbmQpKSB7CiAgICAgICAgICAgICAgICBjb3VudCArPSBtYXAuZ2V0KGZpbmQpOwogICAgICAgICAgICB9CiAKICAgICAgICAgICAgbWFwLnB1dChzdW0sIG1hcC5nZXRPckRlZmF1bHQoc3VtLCAwKSArIDEpOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiBjb3VudDsKICAgIH0KfQo=