#include<stdio.h>
#include<iostream>
using namespace std;
int n,b,d,ans[65],Max,len=1;
int dis(int a,int b)
{
int temp=a^b;//异或求不同位 ,即海明距离
int sum=0;
while(temp)
{
sum++;
temp-=temp&(-temp);
}
return sum;
}
int main()
{
freopen("hamming.in","r",stdin);
freopen("hamming.out","w",stdout);
cin>>n>>b>>d;
Max=(1<<b)-1;
ans[1]=0;
for(int i=1;i<=Max;i++)
{
bool flag=true;
for(int j=1;j<=len;j++)
if(dis(i,ans[j])<d)
{
flag=false;
break;
}
if(flag)
ans[++len]=i;
if(len==n)
break;
}
for(int i=1;i<=len;i++)
{
cout<<ans[i];
if(i%10==0||i==len)
cout<<endl;
else
cout<<" ";
}
return 0;
}