#include<bits/stdc++.h>
#define ll long long
#define pb push_back
using namespace std;
struct Info{int A,B,ci;};
vector<Info> an;
int T,A,B,C,D;
string ans;
void add(int x,Info j){
	int s=x%(j.A+j.B);
	if (s==0)s=j.A+j.B;
	if (s>=1&&s<=j.A) ans+='A';else ans+='B';
}
int main(){
	cin>>T;
	for (int i=1;i<=T;i++){
		an.clear();ans="";
		cin>>A>>B>>C>>D;
		if (A>=B){
			int x=A/(B+1)+((A%(B+1))!=0);
			if (x*B>A){
				int g=(A-B),p=g/(x-1)+((g%(x-1))!=0);
				if (A<p*x||((A-(p*x))/(x+1)!=(B-p)/(x+1)))p--;
				int q=(A-(p*x))/(x+1);
				p+=q;
				an.pb((Info){x,1,p});
				an.pb((Info){A-x*p-q,B-p-x*q,1});
				an.pb((Info){1,x,q});
			}else{
				an.pb((Info){x,1,B});
				an.pb((Info){A-x*B,0,1});
			}
		}else{
			int x=B/(A+1)+((B%(A+1))!=0);
			if (x*A>B){
				int g=(B-A),q=g/(x-1)+((g%(x-1))!=0);
				if (B<q*x||((A-q)/(x+1)!=(B-q*x)/(x+1)))q--;
				int p=(A-q)/(x+1);
				q+=p;
				an.pb((Info){x,1,p});
				an.pb((Info){A-x*p-q,B-p-x*q,1});
				an.pb((Info){1,x,q});
			}else{
				an.pb((Info){0,B-x*A,1});
				an.pb((Info){1,x,A});
			}
		}
		for(auto j:an){
			if (C<=(j.A+j.B)*j.ci&&D>0){
				for (int i=max(C,1);i<=min(D,(j.A+j.B)*j.ci);i++)add(i,j);
			}
			C-=(j.A+j.B)*j.ci;D-=(j.A+j.B)*j.ci;
		}
		cout<<ans<<endl;
	}
	return 0;
}