1 #include2 #define _for(i,a,b) for(int i = (a);i < (b);i ++) 3 using namespace std; 4 5 6 const char a[27] = { 'A','B','C','D','E','F','G','H','I','J', 7 'K','L','M','N','O','P','Q','R','S','T', 8 'U','V','W','X','Y','Z' 9 };10 11 int n,L;12 int cnt;13 int s[82];14 15 int judge(int cur)16 {17 for(int j = 1; j * 2 <= cur + 1; j ++)18 {19 int equal = 1;20 _for(k,0,j)21 if(s[cur-k]!=s[cur-k-j])22 {23 equal = 0;24 break;25 }26 if(equal) return 0;27 }28 return 1;29 }30 int dfs(int cur)31 {32 if(cnt++ == n)33 {34 _for(i,0,cur)35 {36 if(i && (i%64!=0) && (i%4==0)) printf(" ");37 if(i && (i%64==0)) printf("\n");38 printf("%c",a[s[i]]);39 }40 printf("\n%d\n",cur);41 return 0;42 }43 _for(i,0,L)44 {45 s[cur] = i;46 if(judge(cur))47 if(!dfs(cur+1)) return 0;48 }49 return 1;50 }51 52 int main()53 {54 while(cin >> n >> L && (n || L))55 {56 memset(s,0,sizeof(s));57 cnt = 0;58 dfs(0);59 }60 return 0;61 }