#include #include #include #include using namespace std; void solve() { int n; long long x; cin >> n >> x; vector flag(60); for (int i = 0; i < n; ++i) { int c; cin >> c; flag[c] = 1; } for (int i = 0; i < 60; ++i) if ((x >> i) & 1) flag[i] = 0; vector ls, rs; for (int i = 0; i < 60; ++i) { if (flag[i] == 0) continue; long long tmp = 1LL << i; long long l = 0, r = (1LL << 60); while (r - l > 1) { long long mid = (l + r) / 2; ((mid | tmp) <= x ? l : r) = mid; } if ((l | tmp) >= x) ls.push_back(-(1LL << 60)); else ls.push_back((l | tmp)); l = -1, r = ((1LL << 60) | (1LL << 59)); while (r - l > 1) { long long mid = (l + r) / 2; ((mid | tmp) >= x ? r : l) = mid; } rs.push_back(r | tmp); } if (ls.empty()) { cout << 0 << endl; return; } set> l, r; for (int i = 0; i < ls.size(); ++i) l.insert({ls[i], i}); long long mi = l.begin()->first; long long ans = 2LL * (x - mi); while (!l.empty()) { auto [_, id] = *l.begin(); l.erase(l.begin()); r.insert({rs[id], id}); long long mil = x; if (!l.empty()) mil = l.begin()->first; long long mar = r.rbegin()->first; ans = min(ans, (mar - mil) * 2LL); } cout << ans << endl; } int main() { int t; cin >> t; while (t--) solve(); }