#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
****************************************************************/