#include <iostream>
#include <vector>
//#include <cassert>
using namespace std;

int PR[169]={1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997};

void exam()
{
	for (int i=1; i<169; i++)
	{
		for (int t=2; t<PR[i]; t++)
		{
			if (PR[i]%t==0)
				cout<<PR[i]<<"不是質數"<<endl;
		}
	}

}
void ACM406(int N,int C)
{
	vector<int> P;
	for (int i=0; PR[i]<=N && i<169;i++)
	{
		P.push_back(PR[i]);
	}
	int K=P.size();
	int Left_Delete;
	bool ALL=false;
	if (K%2==0)
	{
		 Left_Delete= (K- C*2)/2;		
		 if (C*2>=K)
			 ALL=true;
	}else 
	{
		 Left_Delete= (K+1)/2-C;
		 if (C*2-1>=K)
			 ALL=true;
	}
	if (!ALL)
	{
		for (int t=0; t<Left_Delete; t++)
		{
			P.erase( P.end()-1);
			P.erase( P.begin());
		}
	}
	for (size_t i=0; i<P.size(); i++)
	{
		cout<<" "<<P[i];
	}
	cout<<endl<<endl;
}
int main()
{
	//exam();
	//cout<<"Count(PR)="<< sizeof(PR)/ sizeof(int)<<endl;
	int N,C;
	while(cin>>N>>C)
	{
		if (N>=1 && N<=1000 && C>=1 && C<=N)
		{
			cout<<N<<" "<<C<<':';
			ACM406(N,C);
		}else
			break;
	}
//	getchar();
	return 0;
}
