# include <stdio.h>
# include <string.h>
# define _fin "pavare2.in"
# define _fout "pavare2.out"
# define maxn 101
int n, a, b, k[maxn], aux[maxn],
w[maxn][maxn][maxn], bl[maxn][maxn][maxn],
i, j, l, ns[maxn],
sol[maxn], set[maxn];
char ch;
void add(int a[], int b[])
{
int i, t=0;
for (i=1; i<=a[0]||i<=b[0]||t; i++, t/=10)
a[i]= (t += (a[i]+b[i]))%10;
a[0]=i-1;
}
void sub(int a[], int b[])
{
int i, t=0;
for (i=1; i<=a[0]; i++)
a[i] += (t = (a[i]-=b[i]+t) < 0) * 10;
for (; a[0] > 1 && ! a[a[0]]; a[0]--);
}
int cmp(int a[], int b[])
{
if ( a[0]-b[0] ) return a[0]-b[0];
for (int i=a[0]; i>=1; i--)
if ( a[i]-b[i] ) return a[i]-b[i];
return 0;
}
int main()
{
freopen(_fin, "r", stdin);
freopen(_fout,"w", stdout);
scanf("%d%d%d\n", &n, &a, &b);
while ( ch!='\n' ) {
scanf("%c", &ch);
if ( ch != '\n' ) k[++k[0]]=ch-=0x30;
}
for (i=1; i<k[0]>>1; i++) k[i]^=k[k[0]-i+1]^=k[i]^=k[k[0]-i+1];
w[1][1][0]=w[1][1][1]=bl[1][1][0]=bl[1][1][1]=1;
for (i=2; i<=n; i++)
{
//for (j=2; j<=a; j++) w[i][j]+=w[i-1][j-1];
for (j=2; j<=a; j++) add(w[i][j], w[i-1][j-1]);
//for (j=2; j<=b; j++) bl[i][j]+=bl[i-1][j-1];
for (j=2; j<=b; j++) add(bl[i][j], bl[i-1][j-1]);
//for (j=1; j<=b; j++) w[i][1]+=bl[i-1][j];
for (j=1; j<=b; j++) add(w[i][1], bl[i-1][j]);
//for (j=1; j<=a; j++) bl[i][1]+=w[i-1][j];
for (j=1; j<=a; j++) add(bl[i][1], w[i-1][j]);
}
//for (i=1; i<=a; i++) ns += w[n][i];
for (i=1; i<=a; i++) add(ns, w[n][i]);
//for (i=1; i<=b; i++) ns += bl[n][i];
for (i=1; i<=b; i++) add(ns, bl[n][i]);
//printf("%d\n", ns);
for (i=ns[0]; i>=1; i--) printf("%d", ns[i]); printf("\n");
for (i=n; i>=1; i--)
{
for (j=a; j>=1; j--)
//if ( w[i][j] >= k ) {
if ( cmp(w[i][j], k) >= 0 ) {
//
//for (l=1; l<j; l++) sub(k, w[i][l]);
// punem o secventa 0...01
for (l=1; l<=j; l++, i--)
sol[i]=0, set[i]=1;
sol[i]=set[i]=1;
break;
}
//else k-=w[i][j];
else sub(k, w[i][j]);
for (j=1; j<=b; j++)
//if ( bl[i][j] >= k ) {
if ( cmp(bl[i][j], k) >= 0 ) {
//
//for (l=1; l<j; l++) sub(k, bl[i][l]);
//
for (l=1; l<=j; l++, i--)
sol[i]=set[i]=1;
i++;
break;
}
//else k-=bl[i][j];
else sub(k, bl[i][j]);
}
for (i=n; i>=1; i--) printf("%d", sol[i]);
printf("\n");
return 0;
}