#include<bits/stdc++.h>
using namespace std;
vector<int> split(int x,int n) {
	vector<int> v(n+1,0);
	for(;x;) {
		if (x>=n) {
			for(int i=1;i<=n;i++) v[i]++;
			x-=n;
		} else if (v[1]==0) {
			for(int i=1;i<=x;i++) v[i]++;
			x=0;
		} else {
			for(int i=n;i>=n-x+1;i--) v[i]++;
			x=0;
		}
	}
	return v;
}
pair<bool,string> check(int a,int b,int m,int x) {
	vector<int> v,v1;
	v=split(b,m);
	v1=split(a,m);
//	for(int i=1;i<(int)v1.size();i++) cerr<<v1[i]<<" ";cerr<<endl;
	reverse(v1.begin()+1,v1.end());
	bool flag=true;
	string s="";
//	cerr<<m<<"  :  ";
	for(int i=1;i<=m;i++) {
//		cerr<<v1[i]<<" "<<v[i]<<" ";
		while (v1[i]--) s+='A';
		while (v[i]--) s+='B';
	}
	for(int i=0;i<a+b;i++) {
		int j=i;
		while (j+1<a+b&&s[j+1]==s[j]) j++;
		if (j-i+1>x) {
			flag=false;break;
		}
	}
	return {flag,s};
}
string solve(int a,int b) {

	int n,x,y;
	string s="",sa="",sb="";
	n=ceil(max(a,b)*1.0/(min(a,b)+1));
	//cout<<n<<endl; 
	x=min(b*1.0,ceil((3.0*a-b)/8));
	y=min(a*1.0,ceil((3.0*b-a)/8));
	//cout<<x<<" "<<y<<endl;
	if (x<0) x=0;
	if (y<0) y=0;
	for (int i=0;i<n;i++){
		sa=sa+'A';
		sb=sb+'B';
	}
	sa=sa+'B';
	sb='A'+sb; 
	//cout<<sa<<" "<<sb<<endl;
	//拼接起始A..AB 
	for(int i=0;i<x;i++){
		s=s+sa;
	}
	
	if (n>1){
		//拼接中间A 
		for(int i=0;i<a-n*x-y;i++){
			s=s+'A';
		}
		//拼接中间B 
		for(int i=0;i<b-x-n*y;i++){
			s=s+'B';
		}
	}
	
	//拼接末尾AB..B 
	for(int i=0;i<y;i++){
		s=s+sb;
	}
		
	if(n==1){
		if(a-n*x-y==1) s=s+'A';
		if(b-x-n*y==1) s='B'+s;
	} 
	return s;
	
}
string ans(int a,int b,int c,int d) {
	return solve(a,b).substr(c-1,d-c+1);
}
int q;
long long a,b,c,d;
string sa,sb,s;
int main() {
	
	scanf("%d",&q);
	while (q--) {
		scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
	int m,x,y,x1,y1;
	long long n;
	s="",sa="",sb="";
	n=ceil(max(a,b)*1.0/(min(a,b)+1));
	
	m=d-c+1;
	 
	
	if(n!=1){
		x=min(b,(n*a-b)/(n*n-1));
		y=min(a,(n*b-a)/(n*n-1));
		//cout<<x<<" "<<y<<endl;
		if (x<0) x=0;
		if (y<0) y=0;
		
		x1=a-n*x-y;
		y1=b-n*y-x;
		
		int remc=c%(n+1),devc=(c-1)/(n+1)+1;
		int remd=d%(n+1),devd=(d-1)/(n+1)+1;
		
		for (long long i=c;i<=d;i++){
			if(i<=(n+1)*x){
				if((i-1)%(n+1)+1==1+n){
					cout<<'B';
				}else{
					cout<<'A';
				}
			}else{
				if(i>(n+1)*x+x1+y1){
					if((i-(n+1)*x-x1-y1-1)%(n+1)+1==1){
						cout<<'A';
					}else{
						cout<<'B';
					}
				}else{
					if(i-(n+1)*x<=x1){
						cout<<'A';
					}else{
						cout<<'B';
					}
					
				}
			}
		}
		cout<<endl;
//		if(m>=n+1){
//			//所求长度超过一个自然段 
//			sa=string(n,'A')+'B';
//			sb='A'+string(n,'B');
//			
//			//d在第一个分段内 
//			if(d<=(n+1)*x){
//				
//				for(int i=0;i<devd-devc+1;i++) s+=sa; 
//				c=c%(n+1);
//				d=c+m-1;
//				
//			}else{
//				//c在第三分段内 
//				if(c>(n+1)*x+x1+y1){
//					for(int i=0;i<(m)/(n+1)+1;i++) s+=sb;
//					c=(c-(n+1)*x-x1-y1-1)%(n+1)+1;
//					d=c+m-1;
//					//cout<<s<<endl;
//					//cout<<c<<" "<<d<<endl;
//				}else{
//					for(int i=0;i<ceil(m*1.0/(n+1));i++) s+=sa;
//					s+=string(x1,'A')+string(y1,'B');				 
//					for(int i=0;i<ceil(m*1.0/(n+1));i++) s+=sb;
//					c=c-(x-ceil(m*1.0/(n+1)))*(n+1);
//					d=c+m-1;
//					//cout<<s<<endl;
//					//cout<<c<<" "<<d<<endl;
//				}
//				
//				
//			}			
//		}else{
//			//所求长度在一个自然段内 
//			if(d<=(n+1)*x){
//				//在第一个分段内 
//				if(s[d]=='B'){
//					s=string(d-c,'A')+'B';
//				}else{
//					if(c/(n+1)==d/(n+1)){
//						s=string(d-c+1,'A');	
//					}else{
//						s=string(d/(n+1)*(n+1)-c,'A')+'B'+string(d-d/(n+1)*(n+1),'A');
//					}					
//				}				
//				c=1;
//				d=c+m-1;
//			}else{
//				//在第三个分段内			
//				if(c>(n+1)*x+x1+y1){
//					if(s[c]=='A'){
//						s='A'+string(d-c,'B');
//					}else{
//						if(c/(n+1)==d/(n+1)){
//							s=string(d-c+1,'B');
//						}else{
//							int ic=(d-(n+1)*x-x1-y1)/(n+1)*(n+1)-c;
//							s=string(ic-c,'B')+'A'+string(d-ic,'B');
//						}	
//					}
//				c=1;
//				d=c+m-1;
//				}else{
//					//在中间 
//					s=string(m-1,'A')+'B'+string(x1,'A')+string(y1,'B')+'A'+string(m-1,'B');
//					c=c-(n+1)*x+m;
//					d=c+m-1;
//				}				
//				
//			}
//		}
//		cout<<s.substr(c-1,d-c+1)<<endl;
		//printf("%s\n",s.substr(c-1,d-c+1).c_str());
		//printf("\n");
	}else{
		//n=1例外处理 		
		if(a>=b) {
			if((c % 2)==1){
				for (int i=0;i<(d-c+1)/2;i++){
					s+="AB";
				}
				if((d-c+1) % 2==1) s+='A';				
			}else{
				for (int i=0;i<(d-c+1)/2;i++){
					s+="BA";	
				}
				if((d-c+1) % 2==1) s+='B';
			}	
		}
		if(a<b){
			if((c % 2)==1){
				for (int i=0;i<(d-c+1)/2;i++){
					s+="BA";
				}
				if((d-c+1) % 2==1) s+='B';				
			}else{
				for (int i=0;i<(d-c+1)/2;i++){
					s+="AB";	
				}
				if((d-c+1) % 2==1) s+='A';
			}	
		}
		cout<<s<<endl;		
	} 
	
	
		//cout<<s.substr(c-1,d-c+1)<<endl;
		//printf("%s\n",s.substr(c-1,d-c+1).c_str());
		
		//for(int i=c-1;i<d;i++){
			//putchar(s[i]);
			
		//}
		//printf("\n");
		
	}
	return 0;
}

Measured memory_bytes: 384