#include <bits/stdc++.h>
using namespace std;

int a[20][8];//存储符合条件的牛
int r[8];//存储每头牛的编号的二进制
int k;//符合条件的牛的头数
int b;//每头牛有几只角
int d;//需要几只角不同才友好

//将编号为n的牛的编号转换为2进制
void jinzhi(int n){
	int i; 
	//清空r数组
	for(i = 0;i < b;i++){
		r[i] = 0;
	} 
	
	i = 0;
	while(n != 0){
	   r[i] = n % 2;
	   n = n / 2;
	   i++;
	}
}

//判断编号为n的牛和前面的牛是否友好
bool you(){
	bool f = true;
	//循环a数组的每头牛,判断r数组的这头牛和a数组的每头牛是否友好
	int i,j,c; 
	for(i = 0;i < k;i++){
		c = 0;//假设r和a[i]有c只不同的角
		for(j = 0;j < b;j++){
			if(a[i][j] != r[j]){
				c++;
				if(c >= d){
					break;
				}
			}
		}
		//如果a[i]和r不友好
		if(c < d){
			f = false;
			break;
		}
	}
	
	return f;
}


int main(){
	int i = 0,j;
	int n;
	cin>>n>>b>>d;
	k = 1;
	bool f;
	cout<<0<<" ";
	while(k < n){
		i++;//判断下一组
		jinzhi(i); 
		f = you();//判断r和a数组的牛是否友好
		if(f == true){
			//将r数组的牛角存储到a数组
			for(j = 0;j < b;j++){
				a[k][j] = r[j];
			} 
			cout<<i<<" ";
			k++;
		} 
	}
}

/**************************************************************
	Problem: 1532
	User: admin
	Language: C++
	Result: Accepted
	Time:53 ms
	Memory:2072 kb
****************************************************************/