311103: CF1934D1. XOR Break — Solo Version

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

D1. XOR Break — Solo Versiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

This is the solo version of the problem. Note that the solution of this problem may or may not share ideas with the solution of the game version. You can solve and get points for both versions independently.

You can make hacks only if both versions of the problem are solved.

Given an integer variable $x$ with the initial value of $n$. A single break operation consists of the following steps:

  • Choose a value $y$ such that $0 \lt y \lt x$ and $0 \lt (x \oplus y) \lt x$.
  • Update $x$ by either setting $x = y$ or setting $x = x \oplus y$.
Determine whether it is possible to transform $x$ into $m$ using a maximum of $63$ break operations. If it is, provide the sequence of operations required to achieve $x = m$.

You don't need to minimize the number of operations.

Here $\oplus$ denotes the bitwise XOR operation.

Input

The first line contains one positive integer $t$ ($1 \le t \le 10^4$) — the number of test cases.

Each test case consists of a single line containing two integers $n$ and $m$ ($1 \leq m \lt n \leq 10^{18}$) — the initial value of $x$ and the target value of $x$.

Output

For each test case, output your answer in the following format.

If it is not possible to achieve $m$ in $63$ operations, print $-1$.

Otherwise,

The first line should contain $k$ ($1 \leq k \leq 63$) — where $k$ is the number of operations required.

The next line should contain $k+1$ integers — the sequence where variable $x$ changes after each break operation. The $1$-st and $k+1$-th integers should be $n$ and $m$, respectively.

ExampleInput
3
7 3
4 2
481885160128643072 45035996273704960
Output
1
7 3
-1
3
481885160128643072 337769972052787200 49539595901075456 45035996273704960
Note

In the first test case $n = 7$, for the first operation $x = 7$ if we choose $y = 3$ then $(7 \oplus 3) \lt 7$, hence we can update $x$ with $3$ which is equal to $m$.

In the second test case $n = 4$, for the first operation $x = 4$.

If we choose:

  • $y = 1$ then $(4 \oplus 1) \gt 4$
  • $y = 2$ then $(4 \oplus 2) \gt 4$
  • $y = 3$ then $(4 \oplus 3) \gt 4$

Hence we can't do the first operation and it is impossible to make $x = 2$.

Output

题目大意:这是一个单人版本的题目。给定一个整数变量x,初始值为n。每次操作可以选择一个值y,满足0
输入数据格式:第一行包含一个正整数t(1≤t≤10^4),表示测试用例的数量。每个测试用例包含一行,包含两个整数n和m(1≤m
输出数据格式:对于每个测试用例,如果无法在63次操作内达到m,输出-1。否则,第一行输出操作次数k(1≤k≤63),接下来一行输出k+1个整数,表示变量x每次操作后的变化序列,第一个数和最后一个数分别为n和m。题目大意:这是一个单人版本的题目。给定一个整数变量x,初始值为n。每次操作可以选择一个值y,满足0

加入题单

上一题 下一题 算法标签: