#include<stdio.h>
#include<string.h>
long int n,m,i,a,b,aa,bb,nn,lung[30],
ni[10]={8,8,10,9,7,6,25,14,15,17},
mi[10]={523,4200,5001,8910,46189,88600,346468,590005,1010860,3027197},
ns[10]={5,40,7,32,1155,5906,1,17,12,6},
pa[10]={2,5,5,15,1,5,4,167,7,26},
pb[10]={39,320,144,415,5773,17717,5,2429,2677,3051},
sa[10]={13,13,34,21,8,5,0,233,377,987},
sb[10]={-8,-8,-21,-13,-5,-3,0,-144,-223,-610};
char cuv[3100000],*p1,*p2,caux;
long int ok(long int nnn);
long int comp(long int poz1,long int poz2,long int nrcar);
int main()
{
FILE *f,*g;f=fopen("lampa.in","r");g=fopen("lampa.out","w");
fscanf(f,"%ld%ld",&n,&m);
fscanf(f,"%s",cuv);
for(i=0;i<10;i++)if(m==mi[i])break;
a=pa[i];b=pb[i];aa=sa[i];bb=sb[i];nn=ns[i];
for(i=1;i<=nn;i++)
{ lung[1]=a;lung[2]=b;
for(i=3;i<=n;i++)lung[i]=lung[i-2]+lung[i-1];
if(ok(n))
{ p1=&cuv[0];cuv[a+b]=0;
if(n%2)
{ p2=&cuv[a];
caux=cuv[a];cuv[a]=0;
fprintf(g,"%s\n",p1);
cuv[a]=caux;
fprintf(g,"%s\n",p2);
}
else
{ p2=&cuv[b];
fprintf(g,"%s\n",p2);
cuv[b]=0;
fprintf(g,"%s\n",p1);
}
fcloseall();
return 0;
}
a+=aa;b+=bb;
}
fprintf(g,"0\n");
fcloseall();
return 0;
}
long int ok(long int nnn)
{
if(nnn<=3)return 1;
if(nnn==4)
{ if(comp(0,a+b,b))return 1;
return 0;
}
if(ok(nnn-2))
if(comp(0,lung[nnn-1],lung[nnn-2]))
if(comp(lung[nnn-4],lung[nnn-2],lung[nnn-3]))
return 1;
return 0;
}
long int comp(long int poz1,long int poz2,long int nrcar)
{ long int jj;
for(jj=0;jj<nrcar;jj++)
if(cuv[poz1+jj]!=cuv[poz2+jj])
return 0;
return 1;
}