//#include<stdio.h>
//int main()
//{
// int a;
// int b;
// scanf("%d %d", &a, &b);
// printf("%d", a/b);
//}
//#include<stdio.h>
//int main()
//{
// int a;
// scanf("%d", &a);
// printf("%d", a*2);
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// printf("%d", a << b);
//}
//#include <stdio.h>
//int main(){
// char s[31];
// fgets(s,31,stdin);
// printf("%s",s);
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a>=b)
// {
// printf("1");
// }
// else
// {
// printf("0");
// }
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a==b)
// {
// printf("1");
// }
// else
// {
// printf("0");
// }
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a!=b)
// {
// printf("1");
// }
// else
// {
// printf("0");
// }
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d", &a);
// printf("%d", !a);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a&&b);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a||b);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a&b);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a|b);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a<<b);
// return 0;
//}
//#include <stdio.h>
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d", a>>b);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a>b)
// {
// printf("%d", a);
// }
// else
// {
// printf("%d", b);
// }
//}
//#include <stdio.h>
//int main()
//{
// int a, b, c, min;
// scanf("%d %d %d", &a, &b, &c);
// min = a > b ? b : a;
// min = c > min ? min : c;
// printf("%d", min);
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a;
// scanf("%d", &a);
// if(10>a)
// {
// printf("small");
// }
//}
//#include<stdio.h>
//int main()
//{
// int a;
// scanf("%d", &a);
// if(10>a)
// {
// printf("small");
// }
// else if(10<=a)
// {
// printf("big");
// }
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a>b)
// {
// printf(">");
// }
// else if(a<b)
// {
// printf("<");
// }
// else
// {
// printf("=");
// }
//}
//#include<stdio.h>
//int main()
//{
// int a, b;
// scanf("%d %d", &a, &b);
// if(a>b)
// {
// printf("%d", a-b);
// }
// else
// {
// printf("%d", b-a);
// }
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
// int t;
// int data[3001] = {};
// int arr[3001] = {};
// int i, j;
// scanf("%d", &t);
// for(i = 0; i < t; i++)
// {
// scanf("%d", &data[i]);
// }
// for(i = 0; i < t; i++)
// {
// for(j = 1; j <= data[i]; j++)
// {
// if(data[i]%2==0)//1. 2로 계속 나눠서 마지막까지 2의 배수인 수 (1번이라도 나머지가 1이면 아래 else로)
// {
// data[i] = data[i] / 2;
// arr[i] = 1;
// }
// else//2. 위에서 탈락한 수들 0으로 처리
// {
// arr[i] = 0;
// }
// }
// }
// for(i = 0; i < t; i++)
// {
// printf("%d ", arr[i]);
// }
//}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int memo[400001] = {};
int main()
{
int a, b, c = 0, d = 0, e = 0;
int i, j;
double f;
int arr[400001] = {};
scanf("%d %d", &a, &b);
for(i=a; i<=b; i++) // 시간초과: 모두 조사 ( X )
{
f = sqrt(i);
memo[i] = f;
// printf("%lf ", f);
for(j=1; j<=memo[i]; j++)
{
if(i%j==0)
{
c++;
}
}
if(c == 1)
{
arr[d] = i;
d++;
}
c = 0;
}
// for(i = 0; i <strlen(arr);i++)
// {
// if(arr[i] < 0)
// {
// arr[i] = arr[i] + 256;
// printf("%d", arr[i]);
// }
//
// }
for(i = 0; arr[i]!='\0'; i++)
{
if(arr[i+1] - arr[i] == 2)
{
printf("%d %d\n", arr[i], arr[i+1]);
}
}
}