← Home
write a go solution for Description:
You have an array a_1,a_2,...,a_n where a_i=i.

In one step, you can choose two indices x and y (xneqy) and set a_x=ceil(a_x/a_y) (ceiling function).

Your goal is to make array a consist of n-1 ones and 1 two in no more than n+5 steps. Note that you don't have to minimize the number of steps.

Input Format:
The first line contains a single integer t (1<=t<=1000) — the number of test cases.

The first and only line of each test case contains the single integer n (3<=n<=2*10^5) — the length of array a.

It's guaranteed that the sum of n over test cases doesn't exceed 2*10^5.

Output Format:
For each test case, print the sequence of operations that will make a as n-1 ones and 1 two in the following format: firstly, print one integer m (m<=n+5) — the number of operations; next print m pairs of integers x and y (1<=x,y<=n; xneqy) (x may be greater or less than y) — the indices of the corresponding operation.

It can be proven that for the given constraints it's always possible to find a correct sequence of operations.

Note:
In the first test case, you have array a=[1,2,3]. For example, you can do the following:

1. choose 3, 2: a_3=ceil(a_3/a_2)=2 and array a=[1,2,2];
2. choose 3, 2: a_3=ceil(2/2)=1 and array a=[1,2,1].

In the second test case, a=[1,2,3,4]. For example, you can do the following:

1. choose 3, 4: a_3=ceil(3/4)=1 and array a=[1,2,1,4];
2. choose 4, 2: a_4=ceil(4/2)=2 and array a=[1,2,1,2];
3. choose 4, 2: a_4=ceil(2/2)=1 and array a=[1,2,1,1].. Output only the code with no comments, explanation, or additional text.