// STLのインクルード #include using namespace std; // // ACLのインクルード(デフォルトはコメントアウト) // #include // using namespace atcoder; // for文の略記 #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define per(i, n) for (int i = (int)(n-1); i >= 0; i--) // vectorのソート #define all(x) x.begin(), x.end() // 型の略記 (競プロならでは) using ll = long long; using pii = pair; using pll = pair; using vi = vector; using vl = vector; using vs = vector; using vc = vector; using vpii = vector>; using vpll = vector>; using vpsi = vector>; using vvi = vector>; using vvpii = vector>>; using vvl = vector>; using vvc = vector>; // MOD計算で使う #define MOD 1000000007 #define MOD2 998244353 // YES-NOで答える質問で使う(fがTrueならYes) void cout_yn(bool f){ if(f)cout << "Yes" << endl; else cout << "No" << endl; } // 木の前順走査 void dfs_preorder(int v, vvi &tree, vi &output){ output.push_back(v); rep(i, tree[v].size()){ dfs_preorder(tree[v][i], tree, output); } } // 木の後順走査 void dfs_postorder(int v, vvi &tree, vi &output){ rep(i, tree[v].size()){ dfs_preorder(tree[v][i], tree, output); } output.push_back(v); } // n頂点m辺の無向グラフを隣接リストで受け取る. // 頂点番号は1-indexedとして入力される想定. vector> input_undir_graph(int n, int m){ int a, b; vector> g(n); rep(i, m){ cin >> a >> b; a--, b--; g[a].push_back(b); // a->b へ向かう辺 g[b].push_back(a); // b->a へ向かう辺 } return g; } // n頂点m辺の有向グラフを隣接リストで受け取る. // 頂点番号は1-indexedとして入力される想定. vector> input_dir_graph(int n, int m){ int a, b; vector> g(n); rep(i, m){ cin >> a >> b; a--, b--; g[a].push_back(b); // a->b へ向かう辺 } return g; } // main関数 int main(void){ int t; cin >> t; rep(_, t){ ll x, y; cin >> x >> y; if((x>>y) & 1){ while((x>>y) & 1)y++; cout << (1LL<