#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("pavare2.in");
ofstream g("pavare2.out");
int a[105][105][85],b[105][105][85],sa[105][85],sb[105][85],nr[85],scad[85],k[85];
int n,x,y;
void Atrib(int v[],int x)
{ v[0]=0;
while(x) {v[0]++; v[v[0]]=x%10; x/=10;}
}
void AtribV(int v1[],int v2[])
{ int i;
v1[0]=v2[0];
for(i=1;i<=v2[0];i++)
v1[i]=v2[i];
}
void Adun(int v1[],int v2[])
{ int i,t=0;
if (v1[0]>v2[0])
{for(i=v2[0]+1;i<=v1[0];i++) v2[i]=0; v2[0]=v1[0];}
else
{for(i=v1[0]+1;i<=v2[0];i++) v1[i]=0; v1[0]=v2[0];}
for(i=1;i<=v1[0];i++)
{ t+=v1[i]+v2[i];
v1[i]=t%10; t/=10;
}
if (t) {v1[0]++; v1[v1[0]]=t;}
}
void Subtract(int v1[],int v2[])
{ int i,t;
if (v1[0]>v2[0])
{for(i=v2[0]+1;i<=v1[0];i++) v2[i]=0; v2[0]=v1[0];}
else
{for(i=v1[0]+1;i<=v2[0];i++) v1[i]=0; v1[0]=v2[0];}
t=0;
for(i=1;i<=v1[0];i++)
{ if (t) {v1[i]--; if (v1[i]<0) {v1[i]=9; t=2;} else t=0; }
if (v1[i]<v2[i]) {v1[i]=v1[i]-v2[i]+10; t=1;}
else {v1[i]-=v2[i]; if (t!=2) t=0; }
}
while(!v1[v1[0]] && v1[0]) v1[0]--;
}
int Comp(int v1[],int v2[])
{ int i;
if (v1[0]>v2[0]) return 1;
if (v1[0]<v2[0]) return 0;
for(i=v1[0];i>=1;i--)
{ if (v1[i]>v2[i]) return 1;
if (v1[i]<v2[i]) return 0; }
return 1;
}
void Afis(int v[])
{ int i;
for(i=v[0];i>0;i--)
cout<<v[i];
cout<<"\n";
}
void Dinamic()
{ int i,j;
Atrib(a[1][1],1);
Atrib(sa[1],1);
Atrib(b[1][1],1);
Atrib(sb[1],1);
for(i=2;i<=n;i++)
{ if (i<=x) {Atrib(a[i][x],1); Atrib(sa[i],1);}
if (i<=y) {Atrib(b[i][y],1); Atrib(sb[i],1);}
for(j=1;j<=min(x,i-1);j++)
{AtribV(a[i][j],sb[i-j]);Adun(sa[i],a[i][j]);}
for(j=1;j<=min(y,i-1);j++)
{AtribV(b[i][j],sa[i-j]); Adun(sb[i],b[i][j]);}
}
Adun(sa[n],sb[n]);
for(i=sa[n][0];i>=1;i--) g<<sa[n][i];
g<<"\n";
}
void Reconstruct()
{ int i,j,len,ok=0,semn=0;
len=n; semn=0;
while(len)
{ ok=0; Atrib(scad,0); Atrib(nr,0);
if (!semn || semn==1)
for(i=x;i>=1;i--)
{ Adun(nr,a[len][i]);
if (Comp(nr,k)) {ok=1; len-=i; for(j=1;j<=i;j++) g<<"0"; semn=2; break; }
else Adun(scad,a[len][i]);
}
if (!ok && (!semn || semn==2))
{
for(i=1;i<=y;i++)
{ Adun(nr,b[len][i]);
if (Comp(nr,k)) {ok=1; len-=i; for(j=1;j<=i;j++) g<<"1"; semn=1; break;}
else Adun(scad,b[len][i]);
}
}
Subtract(k,scad);
}
}
int main()
{ int i,j; char sir[35];
f>>n>>x>>y; f>>sir; //cout<<sir;
k[0]=strlen(sir);
for(i=0;i<strlen(sir);i++)
k[k[0]-i]=sir[i]-48;
// Afis(k);
Dinamic();
Reconstruct();
//cout<<a[3][2];
//int nr1[35],nr2[35];
//Atrib(nr1,70); Atrib(nr2,15);
//Subtract(nr1,nr2);
// Afis(nr1);
return 0;
}