#include <iostream>
#include <cmath>
#define MAXP 500
using namespace std;
long long low,up,ans1,ans2,many,prime[MAXP];
void run()
{
int zan,p,now=1,now2;
many=0;
for (int i=1;i<=prime[0];i++)
{
if (now*prime[i]>up)
break;
now*=prime[i];
many++;
now2=now;
p=0;
while (now*2<=up)
{
now*=2;
p++;
}
zan=1<<many;
zan+=(1<<(many-1))*p;
if (zan>ans2 || (zan==ans2 && now<ans1))
{
ans2=zan;
ans1=now;
}
now=now2;
}
}
void ini()
{
cin>>low>>up;
//make prime
int flag;
for (int i=2;i<=MAXP;i++)
{
flag=1;
for (int j=2;j<=sqrt((double)i);j++)
if (i%j==0)
flag=0;
if (flag)
prime[++prime[0]]=i;
}
}
int main()
{
freopen("divisors.in","r",stdin);
freopen("divisors.out","w",stdout);
ini();
run();
printf("Between %d and ",low);
printf("%d,",up);
printf("%d has a maximum of ",ans1);
printf("%d divisors.",ans2);
return 0;
}