#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define vt vector
#define pb push_back
#define eb emplace_back
#define all(x) (x).begin(), (x).end()
#define lb lower_bound
#define ub upper_bound
typedef pair<int, int> pairs;
const ll N = 1e6 + 1;
const int M=1e9 + 7;
#define INF 1e18
// bool isPrime(ll n)
// {
// if (n == 1)
// return false;
// for (ll i = 2; i * i <= n; i++) {
// if (n % i == 0)
// return false;
// }
// return true;
// }
// ll factorial(ll n)
// {
// return (n==1 || n==0) ? 1: n * factorial(n - 1);
// }
// string bin(ll num)
// {
// string str;
// while(num)
// {
// if(num & 1)
// str+='1';
// else
// str+='0';
// num>>=1; // Right Shift by 1
// }
// return str;
// }
// string db(int n)
// {
// // Size of an integer is assumed to be 32 bits
// string ans;
// for (int i = 64; i >= 0; i--)
// {
// int k = n >> i;
// if (k & 1)
// ans += '1';
// else
// ans += '0';
// }
// return ans;
// }
// string rev(string x)
// {
// string ans=x;
// reverse(all(ans));
// return ans;
// }
// ll power(ll x, ll p)
// {
// ll ans = 1;
// while(p)
// {
// if(p&1)
// ans=ans*x%M;
// p/=2;
// x=x*x%M;
// }
// return ans;
// }
// ll fact[N];
// void precalc()
// {
// fact[0]=1;
// for(int i=1;i<N;i++)
// fact[i]=(fact[i-1]*1ll*i)%M;
// }
// ll binexp(ll a,ll b,ll m)
// {
// ll res=1;
// while(b>0)
// {
// if(b&1)
// res=(res*1ll*a)%m;
// a=(a*1ll*a)%m;
// b>>=1;
// }
// return res;
// }
// ll ncr(ll n,ll r)
// {
// precalc();
// ll ans=fact[n];
// ll den=(fact[n-r]*1ll*fact[r])%M;
// ans=ans*binexp(den,M-2,M);
// ans%=M;
// return ans;
// }
// ll prime[nmax],cnt[nmax];
// void sieve()
// {
// prime[0]=0;
// prime[1]=0;
// for(ll i=2;i*i<nmax;i++)
// {
// if(prime[i]!=0)
// continue;
// for(ll j=i*i;j<nmax;j+=i)
// prime[j]=i;
// }
// }
// ll sm(ll n)
// {
// ll s=0;
// while(n)
// {
// s+=n%10;
// n/=10;
// }
// return s;
// }
int main()
{
int t=1;
cin>>t;
while(t--)
{
ll n,m=0,z,h=INF,ct=0,d=0,mx=0,sum=0,ans=-1,mn=0,f=1,f1=0,k=1,x=0,y=0;
cin>>n;
// ll a[n],b[n],c[n];
// string s;
// cin>>s;
// vt<ll> v;
// for(ll i=0;i<n;i++)
// cin>>a[i];
if(n%2==0)
{
cout<<"No"<<endl;
continue;
}
cout<<"Yes"<<endl;
x=1,y=2*n;
for(ll i=0;i<n;i++)
{
cout<<x<<" "<<y<<endl;
x+=2;
x%=n;
if(x==0)
x=n;
y--;
}
// auto up =ub(a,a+n,d);
// int i=0;
// while(a[i]<=d)
// {
// d-=a[i];
// i++;
// }
// for(auto x:v)
// cout<<x<<" ";
// cout<<(f?"YES":"NO")<<endl;
// if(f)
// break;
// }
// if(f)
// {
// cout<<"TAK"<<endl;
// for(ll i=0;i<n;i++)
// cout<<b[i]+1<<" ";
// cout<<endl;
// continue;
// }
// cout<<endl;
// for(auto x:v)
// cout<<x<<" ";
// cout<<endl;
}
}
1370A - Maximum GCD | 149A - Business trip |
34A - Reconnaissance 2 | 59A - Word |
462B - Appleman and Card Game | 1560C - Infinity Table |
1605C - Dominant Character | 1399A - Remove Smallest |
208A - Dubstep | 1581A - CQXYM Count Permutations |
337A - Puzzles | 495A - Digital Counter |
796A - Buying A House | 67A - Partial Teacher |
116A - Tram | 1472B - Fair Division |
1281C - Cut and Paste | 141A - Amusing Joke |
112A - Petya and Strings | 677A - Vanya and Fence |
1621A - Stable Arrangement of Rooks | 472A - Design Tutorial Learn from Math |
1368A - C+= | 450A - Jzzhu and Children |
546A - Soldier and Bananas | 32B - Borze |
1651B - Prove Him Wrong | 381A - Sereja and Dima |
41A - Translation | 1559A - Mocha and Math |