#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
bool vis[maxn],note[maxn];
int a[maxn];
ll l,r;
void get_prime()
{
memset(vis,0,sizeof(vis));
memset(note,0,sizeof(note));
for(ll i=2;i*i<=r;i++)
{
if(vis[i]==0)
{
for(ll j = i+i;j*j<=r;j+=i)
vis[j]=1;
for(ll j=max(2ll,(l+i-1)/i)*i;j<=r;j+=i)
note[j-l]=1;//此处防溢出
}
}
}
int main()
{
while(cin>>l>>r)
{
if(l==1)
l++;
get_prime();
int ok = 0 ;
int tot=0;
for(int i =0;i<=r-l;i++)
{
if(note[i]==0)
{
ok=1;
a[tot++]=i+l;
}
}
if(!ok||tot==1)
{
cout<<"There are no adjacent primes."<<endl;
}
else
{
int maxx=-1,minn=0x3f3f3f3f;
int l1,r1,l2,r2;
for(int i=tot-1;i>0;i--)
{
ll md=a[i]-a[i-1];
if(md>=maxx)
{
maxx=md;
r1=i;
}
if(md<=minn)
{
minn=md;
r2=i;
}
}
printf("%d,%d are closest, %d,%d are most distant.\n",a[r2-1],a[r2],a[r1-1],a[r1]);
}
}
}