//////////////////////////// ****   JAI SHREE RAM   **** //////////////////////////
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
#define int long long int
#define double long double
void fun() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
   #endif
}
int __gcd(int a, int b) {if(b==0) return a; return __gcd(b, a%b);}
int poww(int a, int b, int md) {if(b<0) return 0; if(a==0) return 0; int res=1;
    while(b) {if(b&1){res=(1ll*res*a)%md;}a=(1ll*a*a)%md;b>>=1;}return res;}
int divide(int a, int b, int md) {int rr=a*(poww(b, md-2, md));rr%=md;return rr;}
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
const int size = 1e7 + 5;
/////////////////////////////////////////////////////////////////////////////////
pair<int, int> range(int n, int len) {
	pair<int, int> ans;
	ans.first = len * (len + 1) / 2;
	ans.second = n * (n + 1) / 2 - (n - len) * (n - len + 1) / 2;
	return ans;
}
signed main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); fun();
    int t; cin >> t;
    while(t--) {
    	int n, l, r, s;  
    	cin >> n >> l >> r >> s;
    	int len = r - l + 1;
    	bool flag = true;
    	bool vis[n + 1];
    	memset(vis, 0, sizeof(vis));
    	vector<int> ans;
    	while(len > 0) {
    		pair<int, int> limits = range(n, len);
    		if(s < limits.first && s > limits.second) {
    			flag = false;
    		}
    		pair<int, int> limits2 = range(n, len - 1);
    		bool anotherFlag = false;
    		for(int i = n; i > 0; i--) {
    			if(vis[i]) continue;
    			int ns = s - i;
    			if(limits2.first <= ns && limits2.second >= ns) {
    				ans.push_back(i);
    				s = ns;
    				vis[i] = true;
    				anotherFlag = true;
    				break;
    			}
    		}
    		if(!anotherFlag) {
    			flag = false;
    			break;
    		}
    		len--;
    	}
    	if(!flag) {
    		cout << "-1\n";
    		continue;
    	}
    	vector<int> extras;
    	for(int i = 1; i <= n; i++) {
    		if(!vis[i]) {
    			extras.push_back(i);
    		}
    	}
    	for(int i = 0; i < l - 1; i++) {
    		cout << extras[i] << ' ';
    	}
    	for(int i : ans) {
    		cout << i << ' ';
    	}
    	for(int i = l - 1; i < extras.size(); i++) {
    		cout << extras[i] << ' ';
    	}
    	cout << '\n';
    }
    return 0;
}














