#include #define fst(t) std::get<0>(t) #define snd(t) std::get<1>(t) using ll = std::int64_t; using P = std::tuple; int main(){ std::cin.tie(nullptr); std::ios::sync_with_stdio(false); int T; std::cin >> T; for(int _=0;_> N >> X; std::vector c(N); for(int i=0;i> c[i]; } std::vector

p; for(int i=0;i> c[i] & 1){ p.emplace_back(X, i); continue; } if(X >= (1ll << c[i])){ p.emplace_back((X & ~((1ll << c[i]) - 1)) - 1, i); } p.emplace_back((X & ~((1ll << c[i]) - 1)) | (1ll << c[i]), i); } std::sort(std::begin(p), std::end(p)); ll res = std::numeric_limits::max(); for(int i=0;i+N<=p.size();i++){ int last = -1; ll set = 0; for(int j=i;j(res, 2ll * (std::max(fst(p[last]), X) - std::min(fst(p[i]), X))); } } std::cout << res << std::endl; } }