CF1374B.Multiply by 2, divide by 6

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Multiply by 2, divide by 6

You are given an integer nn. In one move, you can either multiply nn by two or divide nn by 66 (if it is divisible by 66 without the remainder).

Your task is to find the minimum number of moves needed to obtain 11 from nn or determine if it's impossible to do that.

You have to answer tt independent test cases.

Input

The first line of the input contains one integer tt (1t21041 \le t \le 2 \cdot 10^4) — the number of test cases. Then tt test cases follow.

The only line of the test case contains one integer nn (1n1091 \le n \le 10^9).

Output

For each test case, print the answer — the minimum number of moves needed to obtain 11 from nn if it's possible to do that or -1 if it's impossible to obtain 11 from nn.

Note

Consider the sixth test case of the example. The answer can be obtained by the following sequence of moves from the given integer 1511654415116544:

  1. Divide by 66 and get 25194242519424;
  2. divide by 66 and get 419904419904;
  3. divide by 66 and get 6998469984;
  4. divide by 66 and get 1166411664;
  5. multiply by 22 and get 2332823328;
  6. divide by 66 and get 38883888;
  7. divide by 66 and get 648648;
  8. divide by 66 and get 108108;
  9. multiply by 22 and get 216216;
  10. divide by 66 and get 3636;
  11. divide by 66 and get 66;
  12. divide by 66 and get 11.

Samples

7
1
2
3
12
12345
15116544
387420489
0
-1
2
-1
-1
12
36

在线编程 IDE

建议全屏模式获得最佳体验