An Array and Addition Again#228

An Array and Addition Again

1 second
256 megabytes
Hard

Given an array with elements numbered from to . Initially, a_i = 0 for 1 \leq i < 100, and the last element a_{100} is equal to .

The array can be modified using increment operations. To perform increment operations, it is necessary to select integers p_1, p_2, \dots, p_m (1\le p_i < 100) and sequentially execute assignments a_{p_i} \leftarrow (a_{p_i} + a_{p_i + 1}) for from to .

Given an integer , find the sequence of increment operations after which the element at the first position in array becomes equal to .

Input

The first line contains two integers and (1 \le t \le 100, 0 \leq g \leq 5) — the number of input sets and the test block number, respectively.

In the next lines, there is a single integer (1 \le n \le 10^{18}) — the value that a_1 should be equal to after performing the increment operations in the corresponding set.

Output

For each set of input data, output one integer (0 \leq m \leq 2000) in the first line — the number of increase operations.

In the second line, output integers p_i (1 \le p_i < 100) — the parameters of the increase operations.

If there are multiple correct answers, you can output any of them.

Examples

Example

Input
1 0
1
Output
99
99 98 ... 7 6 5 4 3 2 1

Example

Input
2 0
3
16
Output
101
99 98 ... 7 6 5 4 3 2 1 1 1
103
99 98 ... 7 6 5 4 4 3 3 2 2 1 1

Note

For clarity, the examples of the input data in the problem statement have been reduced. To obtain the correct answer, replace "..." with the sequence of integers from to .

Let's consider the second set of input data for the second example, where n = 16. The first 8 elements of the array after performing the next operation look as follows:

  • p_1 = 99, a = [0, 0, 0, 0, 0, 0, 0, 0, \ldots, 0, 0, 1, 1];

  • p_2 = 98, a = [0, 0, 0, 0, 0, 0, 0, 0, \ldots, 0, 1, 1, 1];

  • p_{93} = 7, a = [0, 0, 0, 0, 0, 0, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{94} = 6, a = [0, 0, 0, 0, 0, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{95} = 5, a = [0, 0, 0, 0, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{96} = 4, a = [0, 0, 0, 1, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{97} = 4, a = [0, 0, 0, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{98} = 3, a = [0, 0, 2, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{99} = 3, a = [0, 0, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{100} = 2, a = [0, 4, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{101} = 2, a = [0, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{102} = 1, a = [8, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1];

  • p_{103} = 1, a = [16, 8, 4, 2, 1, 1, 1, 1, \ldots, 1, 1, 1, 1].

Scoring

The first four test blocks allow using no more than 300 increment operations.

  1. ( points): n \leq 100;

  2. ( points): n = k^2 for some integer 1 \le k \le 100;

  3. ( points): n = (2^k - 1) for some integer ;

  4. ( points): is a Fibonacci number (i.e., is an element of the sequence where each element is the sum of the two previous ones: 1, 1, 2, 3, 5, 8, 13, 21, 34, \dots);

  5. (up to points): without additional restrictions. Let the maximum number of increment operations used be . If c \le 300, you will receive points, otherwise you will receive (17 + \left \lfloor \frac{2000 - c}{34} \right \rfloor) points.

The C++ code that calculates the number of points for the last test block depending on the number of increment operations used is:

((c <= 300) ? 67 : (17 + (2000 - c) / 34))