#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = 50010, M = 1000010;
int primes[N], cnt;
bool is_prime[N];
int l, r;
bool is_prime2[M];
void get_primes(int n)
{
fill(is_prime, is_prime+N, true);
for(int i = 2; i <= n; ++i)
{
if(is_prime[i]) primes[cnt++] = i;
for(int j = 0; primes[j] * i <= n; ++j)
{
is_prime[primes[j]*i] = false;
if(i % primes[j] == 0) break;
}
}
}
int main()
{
get_primes(50000);
while(cin >> l >> r)
{
fill(is_prime2, is_prime2+M, true);
for(int i = 0; i < cnt; ++i)
{
// p0 = first multiple of p greater or equal to l
// p0 = ceil(l/p) = (l+p-1)/p
ll p = primes[i];
for(ll j = max(2*p, (l+p-1)/p*p); j <= r; j += p)
{
is_prime2[j-l] = false;
}
}
int mi_a = 0, mi_b = 1e9, mx_a = -1, mx_b = -1;
for(ll i = l, j = -1; i <= r; ++i) // i要定义成ll 类型,不然i = r之后++i会爆int
{
if(i >= 2 && is_prime2[i-l]) // i必须要大于2
{
if(j != -1)
{
if(i-j < mi_b-mi_a)
{
mi_a = j, mi_b = i;
}
if(i-j > mx_b-mx_a)
{
mx_a = j, mx_b = i;
}
}
j = i;
}
}
if(mi_a != 0)
{
cout << mi_a << ',' << mi_b << " are closest, " << mx_a << ',' << mx_b << " are most distant.\n";
}
else
{
cout << "There are no adjacent primes.\n";
}
}
return 0;
}