#include<iostream>
using namespace std;
#define ARR_LENGTH 1002
int main()
{
int number[ARR_LENGTH] = {-1,1};
// 1 means 0 is the 1st prime, 0 means have not handle, -1 means not prime
//int count = 1;
for(int i = 2, primeIndex=2 ; i <= ARR_LENGTH ; i++)
{
if(number[i]==0){
number[i]=primeIndex;
for(int j=2*i;j<ARR_LENGTH;j+=i){
number[j]=-1;
}
primeIndex++;
}
}
/* //for DEBUG
for(int i=0;i<100;i++){
cout<<number[i]<<" "<<i<<endl;
}
system("pause");*/
int N, C;
while( cin>>N>>C)
{
int begin, end;
int primeCount; // primeCount =i means ith prime
for(int i=N;i>=0;i--){
if(number[i]>0){
primeCount=number[i];
break;
}
}
if(primeCount%2==0)
{
begin = primeCount/2 - C + 1;
if( begin < 1 ){
begin = 1;
}
end = primeCount/2 + C;
if( end > primeCount ){
end = primeCount;
}
}
else
{
begin = (primeCount/2 + 1) - C + 1;
if( begin < 1 )
begin = 1;
end = (primeCount/2 + 1) + C -1; //notice: (C*2)-1
if( end > primeCount )
end = primeCount;
}
cout<<N<<" "<<C<<":";
for(int i = 1 ; i <= N ; i++ )
{
if(number[i]>=begin && number[i]<=end)
{
cout<<" "<<i;
}
}
cout<<endl<<endl;
}
return 0;
}