//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//int main()
//{
// int n, data[100005] = {}, i, m, sum, j;
// int arr[7] = {};
// scanf("%d", &n);
// for(i=0;i<n;i++)
// {
// scanf("%d", &data[i]);
// }
// scanf("%d",&m);
// for(i=0;i<m;i++)
// {
// gets(arr);
// char *brr = strtok(arr, " ");
// brr = atoi(brr);
// int prefix[100005] = {};
// for(j=0;j<n;j++)
// {
// prefix[j + 1] = prefix[j] + data[j];
// }
// sum = prefix[arr[2]] - prefix[arr[1] - 1];
// if(arr[0] == 0)
// {
// printf("%d\n", sum);
// }
// else if(arr[0] == 1)
// {
// for(j=arr[1] - 1; j< arr[2];j++)
// {
// data[j] += arr[3];
// }
// }
// else
// {
// for(j = arr[1] - 1; j < arr[2];j++)
// {
// data[j] -= arr[3];
// }
// }
// }
//}
//
//
//#include<stdio.h>
//int main()
//{
// int f, o, r, t, y, e, n, s, i, x;
// for(f = 0; f <=9; f++)
// {
// for(o = 0; o <= 9; o++)
// {
// for(r = 0; r <= 9;r++)
// {
// for(t = 0; t <= 9;t++)
// {
// for(y = 0;y<=9;y++)
// {
// for(e= 0;e<=9;e++)
// {
// for(n=0;n<=9;n++)
// {
// for(s=0;s<=9;s++)
// {
// for(i=0;i<=9;i++)
// {
// for(x=0;x<=9;x++)
// {
// if(10000 f + 1000 o + 100 r + 10t + y + 2*(100*t + 10 e + n) == 10000 s + 1000 i + 100 x + 10 * t + y)
// {
// if()
// {
// printf("%d%d%d%d%d+%d%d%d+%d%d%d=%d%d%d%d%d",f,o,r,t,y,t,e,n,t,e,n,s,i,x,t,y);
// return 0;
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
//}
#include<stdio.h>
#include<math.h>
int main()
{
int a, b, i, j;
int cnt = 0;
int arr[400000] = {};
scanf("%d %d", &a, &b);
for(i = a; i <= sqrt(b); i++)
{
if(arr[i] == 0)
{
for(j = 2; i * j <= b; j++)
{
arr[i * j] = 1;
}
}
}
for(i=a ; i <= b-2; i++)
{
if(arr[i] == 1 || arr[i+2] == 1)
{
cnt++;
}
if(cnt == 0)
{
printf("%d %d\n", i, i+2);
}
else
{
cnt = 0;
}
}
}
# n = int(input())
# data = list(map(int, input().split()))
# m = int(input())
# sum = 0
# for i in range(m):
# arr = list(map(int, input().split()))
# prefix_sum = [0] * (n + 1)
# for j in range(n):
# prefix_sum[j + 1] = prefix_sum[j] + data[j]
# sum = prefix_sum[arr[2]] - prefix_sum[arr[1] - 1]
# if arr[0] == 0:
# print(sum)
# sum = 0
# elif arr[0] == 1:
# for j in range(arr[1] - 1, arr[2]):
# data[j] += arr[3]
# else:
# for j in range(arr[1] - 1, arr[2]):
# data[j] -= arr[3]
#
# a, b, c = map(int, input().split())
# def gcd(a, b):
# if b == 0:
# return a
# else:
# return gcd(b, a % b)
#
# def Execute(a, b):
# ret = [0] * 2
# if b == 0:
# ret[0] = 1
# ret[1] = 0
# return ret
# q = a // b
# v = Execute(b, a % b)
# ret[0] = v[1]
# ret[1] = v[0] - v[1] * q
# return ret
#
# mgcd = gcd(a, b)
#
# if a == 0 and b == 0 and c == 0:
# print(0, 0)
# elif a == 0 and b == 0:
# print("Not Exist")
# elif c % mgcd != 0:
# print("Not Exist")
#
# else:
# mok = int(c / mgcd)
# ret = Execute(a, b)
# print(ret[0] mok, ret[1] mok)
# data = input().split()
# max = -1
# min = 55
# for i in range(10):
# data[i] = list(data[i])
# for i in range(10):
# for j in range(len(data[i])):
# data[i][j] = int(data[i][j])
# for i in range(10):
# if max < sum(data[i]):
# max = sum(data[i])
# if min > sum(data[i]):
# min = sum(data[i])
# print(max, min)