#include<bits/stdc++.h>
using namespace std;
map<int,set<int> > lef;
map<int,set<int> > rig;
int main()
{
int t;
cin>>t;
int i,j;
int n,m,d,D;
while(t--)
{
lef.clear();
rig.clear();
cin>>n>>m>>d>>D;
int flag=0;
int k=0;
int edgec=0;
while(1)
{
for(i=1;i<=n;i++)
{
int tmp=i+k;
if(tmp>n)
tmp-=n;
lef[i].insert(tmp);
rig[tmp].insert(i);
edgec++;
if(edgec==m)
break;
}
k++;
if(k==n)
break;
if(edgec==m)
break;
}
for(i=1;i<=n;i++)
{
if(lef[i].size()<d || lef[i].size()>D || rig[i].size()<d || rig[i].size()>D)
{
flag=1;
break;
}
}
if(flag==1 || edgec!=m)
{
cout<<-1<<endl;
continue;
}
for(i=1;i<=n;i++)
{
for(auto it=lef[i].begin();it!=lef[i].end();it++)
{
cout<<i<<" "<<*it<<endl;
}
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbWFwPGludCxzZXQ8aW50PiA+IGxlZjsKbWFwPGludCxzZXQ8aW50PiA+IHJpZzsKIAppbnQgbWFpbigpCnsKICAgIGludCB0OwogICAgY2luPj50OwogICAgaW50IGksajsKIAogCiAgICBpbnQgbixtLGQsRDsKIAogICAgd2hpbGUodC0tKQogICAgewogICAgICAgICBsZWYuY2xlYXIoKTsKICAgICAgICByaWcuY2xlYXIoKTsKICAgICAgICBjaW4+Pm4+Pm0+PmQ+PkQ7CiAgICAgICAgaW50IGZsYWc9MDsKIAogCiAgICAgICAgaW50IGs9MDsKICAgICAgICBpbnQgZWRnZWM9MDsKIAogICAgICAgICB3aGlsZSgxKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IoaT0xO2k8PW47aSsrKQogICAgICAgICAgICAgewogCiAgICAgICAgICAgICAgIGludCB0bXA9aStrOwogCiAgICAgICAgICAgICAgIGlmKHRtcD5uKQogICAgICAgICAgICAgICAgdG1wLT1uOwogCiAgICAgICAgICAgICAgbGVmW2ldLmluc2VydCh0bXApOwogICAgICAgICAgICAgIHJpZ1t0bXBdLmluc2VydChpKTsKICAgICAgICAgICAgICBlZGdlYysrOwogCiAgICAgICAgICAgICAgaWYoZWRnZWM9PW0pCiAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaysrOwogCiAgICAgICAgICAgICBpZihrPT1uKQogICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICBpZihlZGdlYz09bSkKICAgICAgICAgICAgICAgIGJyZWFrOwogCiAKICAgICAgICAgfQogCiAgICAgICAgICBmb3IoaT0xO2k8PW47aSsrKQogICAgICB7CiAgICAgICAgICBpZihsZWZbaV0uc2l6ZSgpPGQgfHwgbGVmW2ldLnNpemUoKT5EIHx8IHJpZ1tpXS5zaXplKCk8ZCB8fCByaWdbaV0uc2l6ZSgpPkQpCiAgICAgICAgICB7CiAKICAgICAgICAgICAgICBmbGFnPTE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgIH0KIAogICAgICAgaWYoZmxhZz09MSB8fCBlZGdlYyE9bSkKICAgICAgewogICAgICAgICAgY291dDw8LTE8PGVuZGw7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgfQogCiAKICAgICAgIGZvcihpPTE7aTw9bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoYXV0byBpdD1sZWZbaV0uYmVnaW4oKTtpdCE9bGVmW2ldLmVuZCgpO2l0KyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQ8PGk8PCIgIjw8Kml0PDxlbmRsOwogICAgICAgICAgICB9CiAgICAgICAgfQogCiAKIAogCiAKIAogICAgfQogCn0=