#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <windows.h>
using namespace std;
#define Max 3300
#define Size 3200
bool isPrime[Max];
int n,m,d;
void primeRadiation(){
memset( isPrime, true, sizeof( isPrime ) );
isPrime[1] = false;
for( int i = 4; i <= Size; i += 2 )
isPrime[i] = false;
for( int i = 3; i <= sqrt( Size ); ++i ){
if( isPrime[i] == true ){
const int step = 2 * i;
for( int j = i * i; j <= Size; j += step )
isPrime[j] = false;
}
}
}
bool isAntiPrime( const vector< int >& vec, const int& dd ){
const int end = vec.size()-1;
for( int i = 0; i <= ( end - dd + 1 ); ++i ){
int val = 0;
for( int j = i; j <= ( i + dd - 1 ); ++j )
val += vec[j];
if( isPrime[val] == true )
return false;
}
return true;
}
int main(){
primeRadiation();
while( cin >> n >> m >> d ){
DWORD begin,end;
vector< int > vec;
begin = GetTickCount();
for( int i = n; i <= m; ++i )
vec.push_back( i );
bool b = false;
do{
int dd = d;
while( true ){
b = isAntiPrime( vec, dd );
if( b == false )
break;
dd--;
if( dd == 1 )
break;
}
if( b == true ){
for( int i = 0; i < vec.size(); ++i )
cout << vec[i] << " ";
cout << endl;
break;
}
}while( next_permutation( vec.begin(), vec.end() ) );
end = GetTickCount();
cout << ( end - begin ) << endl;
if( b == false )
cout << "No anti-prime sequence exists." << endl;
}
return 0;
}