#include <bits/stdc++.h>
using namespace std;
void f(int arr[], int n) {
  cout << "2" << endl;
  int l, r;
  int f, s;
  f = arr[n - 1 - 2];
  s = arr[n - 1];
  int avg;
  float sum = f + s;
  sum /= 2;
  avg = ceil(sum);
  cout << f << " " << s << endl;
  arr[n - 1 - 2] = avg;
  l = n - 1 - 2;
  r = n - 1 - 1;
  int count = 0;
  for (count = 0; count < n - 2; count++) {
    f = arr[l];
    s = arr[r];
    cout << f << " " << s << endl;
    sum = f + s;
    sum /= 2;
    avg = ceil(sum);
    arr[l] = avg;
    l--;
    r--;
  }
}
int main() {
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) {
    int n;
    cin >> n;
    int arr[n];
    for (int j = 0; j < n; j++) {
      arr[j] = (j + 1);
    }
    if (n == 2) {
      cout << "2" << endl;
      cout << "1 2" << endl;
    } else {
      f(arr, n);
    }
  }
  return 0;
}

### Prompt

Please formulate a CPP solution to the following problem:

Numbers 1, 2, 3, ... n (each integer from 1 to n once) are written on a board. In one operation you can erase any two numbers a and b from the board and write one integer (a + b)/(2) rounded up instead.

You should perform the given operation n - 1 times and make the resulting number that will be left on the board as small as possible. 

For example, if n = 4, the following course of action is optimal:

  1. choose a = 4 and b = 2, so the new number is 3, and the whiteboard contains [1, 3, 3]; 
  2. choose a = 3 and b = 3, so the new number is 3, and the whiteboard contains [1, 3]; 
  3. choose a = 1 and b = 3, so the new number is 2, and the whiteboard contains [2]. 



It's easy to see that after n - 1 operations, there will be left only one number. Your goal is to minimize it.

Input

The first line contains one integer t (1 ≤ t ≤ 1000) — the number of test cases.

The only line of each test case contains one integer n (2 ≤ n ≤ 2 ⋅ 10^5) — the number of integers written on the board initially.

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

Output

For each test case, in the first line, print the minimum possible number left on the board after n - 1 operations. Each of the next n - 1 lines should contain two integers — numbers a and b chosen and erased in each operation.

Example

Input


1
4


Output


2
2 4
3 3
3 1

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
void f(int arr[], int n) {
  cout << "2" << endl;
  int l, r;
  int f, s;
  f = arr[n - 1 - 2];
  s = arr[n - 1];
  int avg;
  float sum = f + s;
  sum /= 2;
  avg = ceil(sum);
  cout << f << " " << s << endl;
  arr[n - 1 - 2] = avg;
  l = n - 1 - 2;
  r = n - 1 - 1;
  int count = 0;
  for (count = 0; count < n - 2; count++) {
    f = arr[l];
    s = arr[r];
    cout << f << " " << s << endl;
    sum = f + s;
    sum /= 2;
    avg = ceil(sum);
    arr[l] = avg;
    l--;
    r--;
  }
}
int main() {
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) {
    int n;
    cin >> n;
    int arr[n];
    for (int j = 0; j < n; j++) {
      arr[j] = (j + 1);
    }
    if (n == 2) {
      cout << "2" << endl;
      cout << "1 2" << endl;
    } else {
      f(arr, n);
    }
  }
  return 0;
}

```