import sys def solve() -> None: data = list(map(int, sys.stdin.buffer.read().split())) it = iter(data) t = next(it) answers: list[str] = [] for _ in range(t): n = next(it) s = next(it) # bit i が 1 なら、部分和 i を作れる。 reachable = 1 # 空集合による部分和 0 mask = (1 << (s + 1)) - 1 for _ in range(n): a = next(it) if a <= s: reachable |= reachable << a reachable &= mask answers.append(str(reachable.bit_length() - 1)) sys.stdout.write("\n".join(answers)) if __name__ == "__main__": solve()