#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <climits>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <algorithm>
#include <sstream>
#include <numeric>
using namespace std;

#define ft first
#define sc second
#define re return
#define pb push_back
#define For(i,j,k) for (int i=(int)(j);i<=(k);i++)
#define Rep(i,j,k) for (int i=(int)(j);i>=(k);i--)

#define mp make_pair
#define sz(a) int((a).size())
#define all(c) (c).begin(),(c).end()
#define forit(it,S) for(__typeof(S.begin()) it = S.begin(); it != S.end(); ++it)

#define DEBUG true

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const long long MOD = 1e9 + 7;

template <class T>
struct BIT {
	int n;
	vector<T> tree;
	BIT( int n ) :n( n + 1 ), tree( n + 1 ) {}
	void add( int x, T a )
	{
		for ( ; x < n; x += x & -x ) tree[ x ] += a;
	}
	T sum( int x )
	{
		T ret = 0;
		for ( ; x; x ^= x & -x ) ret += tree[ x ];
		return ret;
	}
	T rangeSum( int l, int r )
	{
		return( sum( r ) - sum( l - 1 ) );
	}
};
/* ----------------------------------------------------- */

const ll MYMOD = 998244353;
const int MAX_N = 200100;

int n;

inline void pre()
{
	// pre
}

inline void read()
{
	cin >> n;
}


inline void solve()
{
	int target = n;
	int cur = n - 1;
	int half = ( n + 1 ) / 2;
	int sq = sqrt( n - 1 ) + 1;

	vector<int> two;

	vector<pii> ret;
	while ( true )
	{
		if ( cur == sq )
		{
			ret.emplace_back( target, cur );
			ret.emplace_back( target, cur );

			if ( cur == 2 ) break;

			target = cur;
			sq = sqrt( target - 1 ) + 1;
		}
		else
		{
			ret.emplace_back( cur, target );
		}
		cur--;
	}

	cout << ret.size() << '\n';
	for ( auto e : ret )
	{
		cout << e.first << ' ' << e.second << '\n';
	}
}

int main()
{
	ios::sync_with_stdio( false );
	cin.tie( 0 ); cout.tie( 0 );
	cout.precision( 10 ); cout << fixed;

	pre();

	int t = 1;
	cin >> t;
	while ( t-- )
	{
		read();
		solve();
	}

	return 0;
}