#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

#define NMAX 31663

int np=0;
int primos[NMAX];
int marc[NMAX];

int numeroDivisores(int n) {
	int i;
	int nu=n;
	int fator[NMAX];
	int nf=0;

	memset(marc, 0, sizeof(marc));

	fator[nf++]=1;
	marc[1]=1;
	if (!marc[n]) {
		fator[nf++]=n;
	}
	for (i=0; nu>1; i++) {
		if (!(nu%primos[i])) {
			nu/=primos[i];
			if (!marc[primos[i]]) {
				fator[nf++]=primos[i];
				marc[primos[i]]=1;
			}
			if (!marc[nu]) {
				fator[nf++]=nu;
				marc[nu]=1;
			}
			i--;
		}
	}

	return nf;
}

int main() {
	int ntestes, teste;
	int n, m;
	int nd;
	int maior, numero;
	int risca[NMAX];
	int i, j;

	memset(risca, 0, sizeof(risca));

	for (i=4; i<NMAX; i+=2) {
		risca[i]=1;
	}

	primos[np++]=2;

	for (i=3; i<NMAX; i+=2) {
		if (!risca[i]) {
			primos[np++]=i;
			for (j=i*2; j<NMAX; j+=i) {
				risca[j]=1;
			}
		}
	}
	
	scanf("%d", &ntestes);
	for (teste=0; teste<ntestes; teste++) {
		scanf("%d %d", &n, &m);
		maior=0;
		for (i=n; i<=m; i++) {
			nd=numeroDivisores(i);
			if (nd>maior) {
				maior=nd;
				numero=i;
			}
		}
		printf("Between %d and %d, %d has a maximum of %d divisors.\n", n, m, numero, maior);
	}


	return 0;
}

