蒟蒻的自我拯救。。。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<stdio.h>
#include<cstring>
#include<vector>
#include<stdio.h>
using namespace std;
const int maxn=41779;
int a[142];
int n,l;
int cnt=0;
bool dfs(int cur)
{
if(cnt==n)
{
int k=0;
int num=0;
for(int i=0;i<cur;i++)
{
if(k==4&&num!=16){printf(" ");k=0;}
if(num==16){printf("\n");num=0;k=0;}
printf("%c",a[i]+'A');
k++;
if(k==4)num++;
}
printf("\n%d\n",cur);
return 1;
}
for(int i=0;i<l;i++)
{
a[cur]=i;
int j=1;
bool ok=0;
for(int j=1;2*j<=cur+1;j++)
{
ok=1;
for(int k=0;k<j;k++)
if(a[cur-k]!=a[cur-j-k])
{
ok=0;break;
}
if(ok==1)break;
}
if(ok==1)continue;
cnt++;
if(dfs(cur+1)) return 1;
}
return 0;
}
int main()
{
while(cin>>n>>l)
{
if(n==0&&l==0)break;
memset(a,-1,sizeof(a));
cnt=0;
dfs(0);
}
}