#include <bits/stdc++.h>
#define fastIO ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define int long long
using namespace std;
#define prnt(v) for(auto i:v)cout<<i<<" " ; cout<<endl;
#define trnf(s,v) for(auto i:s) v.push_back(i);
#define all(v) v.begin(),v.end()
#define inp(v,n) vector<int> v(n); for(int i=0; i<n;i++)cin>>v[i];
const int mod = 1000000007;
const int N = 2000010;
const int inf = 1e18;
signed main(){
fastIO;
int t; cin >> t;
while(t--){
int n, k; cin >> n >> k;
if(n == 4 && k == 3){
cout << -1 << endl;
}
else if(k == n - 1){
cout << n - 2 << " " << n - 1 << endl;
cout << 1 << " " << n - 3 << endl;
int i = 0, j = n - 1;
while(j - i > 0){
if(j == n -1 || j == n - 2 || j == n - 3 || i == 1) {i++; j--;continue;}
cout << i << " " << j << endl;
i++; j--;
}
cout << 0 << " " << 2 << endl;
}
else{
cout << k << " " << n - 1 << endl;
int i = 0, j = n - 1;
while(j - i > 0){
if(i == k || i == n - 1 || j == k || j == n - 1){
i++;
j--;
continue;
}
cout << i << " " << j << endl;
i++; j--;
}
if(k != 0){
int x , y;
if(k >= (n/2)){
x = n - k - 1;
y = 0;
}
else{
x = 0;
y = n - (k + 1);
}
cout << x << " " << y << endl;
}
}
}
}
903C - Boxes Packing | 887A - Div 64 |
755B - PolandBall and Game | 808B - Average Sleep Time |
1515E - Phoenix and Computers | 1552B - Running for Gold |
994A - Fingerprints | 1221C - Perfect Team |
1709C - Recover an RBS | 378A - Playing with Dice |
248B - Chilly Willy | 1709B - Also Try Minecraft |
1418A - Buying Torches | 131C - The World is a Theatre |
1696A - NIT orz | 1178D - Prime Graph |
1711D - Rain | 534A - Exam |
1472A - Cards for Friends | 315A - Sereja and Bottles |
1697C - awoo's Favorite Problem | 165A - Supercentral Point |
1493A - Anti-knapsack | 1493B - Planet Lapituletti |
747B - Mammoth's Genome Decoding | 1591C - Minimize Distance |
1182B - Plus from Picture | 1674B - Dictionary |
1426C - Increase and Copy | 520C - DNA Alignment |