#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
#include <stdio.h>
#include <time.h>
#include <chrono>
#include <ctime>
#define mt make_tuple
#define ll long long
#define ld long double
#define eb emplace_back
#define fi first
#define pb push_back
#define endl '\n'
#define all(x) (x).begin(), (x).end()
#define SZ(x) ((int)((x).size()))
#define rall(x) (x).rbegin(), (x).rend()
#define forn(i, n) for (int i = 0; i < (int)(n); ++i)
#define fore(i, a, b) for (int i = (int)(a); i <= (int)(b); ++i)
#define make_unique(vec) sort(all(vec)); vec.resize(unique(all(vec)) - vec.begin());
#define scanVec(vec) for(int i = 0; i < SZ(vec) ; i++){ cin >> vec[i];}
#define printVec(vec) for(int i = 0; i < SZ(vec) ; i++){ cout<<vec[i]<<" ";}
#define mod(a,b) ((a%b +b)%b)
#define bit(x,i) (x&(1<<i))  //select the bit of position i of x
#define lowbit(x) ((x)&((x)^((x)-1))) //get the lowest bit of x
#define hBit(msb,n) asm("bsrl %1,%0" : "=r"(msb) : "r"(n)) //get the highest bit of x, maybe the fastest
//#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }
#define IN(i,l,r) (l<i&&i<r)
#define LINR(i,l,r) (l<=i&&i<=r)
#define LIN(i,l,r) (l<=i&&i<r)
#define INR(i,l,r) (l<i&&i<=r)
#define lastEle(vec) vec[vec.size()-1] 
#define FOREACH(i,t) for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++) 
#define ll long long 
#define ull unsigned long long
#define ui unsigned int
#define us unsigned short
#define INF 1001001001
//#define PI 3.1415926535897932384626
 
using namespace std;
 using namespace __gnu_pbds;
 template <typename T>
 using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
 
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vpi;
typedef vector<vi> vvi;

#define deb(args...) { error(args); cout << flush;}

#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',',' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }

void err(istream_iterator<string> it) {}
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
	cerr << " [" << *it <<  ": " << a << "] " << flush;
	err(++it, args...);
}
//----------------------------------------------------------------------------------------------------------------------

struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        // http://xorshift.di.unimi.it/splitmix64.c
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }

    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
}; 

// unordered_map<long long, int, custom_hash> safe_map;
// unordered_set<long long, custom_hash> safe_set;

//----------------------------------------------------------------------------------------------------------------------
void swap(char & a, char & b){
    auto temp = a;
    a = b;
    b = temp;
}
 
const ll MOD = 1e9 + 7;
 
unsigned ll inf = 1ULL*1e18;
 
void no(){
    cout <<"NO" << endl;
   //exit(0);
}
 
void yes(){
    cout <<"YES" << endl; //exit(0);
}

const ll md = 998244353;
 
const int MAXN = 2*1e5 + 10;




void sl(){
	ll n,left,right;
	cin >> n >> left >> right;
	vector< ll > ans (right - left + 1);
	ll curr = 1;
	ll l = 1; ll r = n;
	while(l <= r){
		ll c = l + (r - l)/2;
		ll sum = c*n - ( ((c + 1)*c) / 2 );
		sum*=2;
		if(sum <= left){
			curr = max(c,curr);
			l = c + 1;
		}else{
			r = c - 1;
		}
	}
	l = 1; r = n - curr;
	ll from = 0;
	while(l <= r){
		ll c = l + (r - l)/2;
		if(curr + c*2 <= left){
			from = max(from,c);
			l = c + 1;
		}else{
			r = c - 1;
		}
	}
	ll currInd = curr + from*2;
	//deb(from) cout << endl;
	from = curr + 1 + from;
	//deb(currInd,curr,from); cout << endl;
	int pos = 0;
	if(currInd != left){
		pos++;
	}
	//deb(currInd,curr,from,pos); cout << endl;
	for(int i = 0;i < SZ(ans);i++){
	//	deb(curr,from,pos); cout << endl;
		if(curr == n){
			ans[i] = 1LL; break;
		}
		if(pos == 0){
			ans[i] = curr;
		}else{
			ans[i] = from;
			from++;
			if(from > n){
				curr++;
				from = curr + 1;
			}
		}
		pos++; pos %= 2;
	}
	
	for(auto & it : ans){
		cout << it << " ";
	}
	cout << endl;
}



int main(){
	//freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    //srand(time(NULL));
    // 1 - multiple tests
    // 0 - single test
    int ts = 1;
    if(ts == 1) cin >> ts;
    else ts = 1;
    while(ts--) sl(); 
    return 0;
} 
