#include<bits/stdc++.h>
using namespace std;
char s[45];
int n,m;
struct bi
{
int d[105],len=0;
bi(){memset(d,0,sizeof(d));}
} dp[45][10];
bi val(int l,int r)
{
bi ans;
ans.len=r+l-1;
for(int i=r;i>=l;i--)
{
ans.d[r-i+1]=s[i]-'0';
}
return ans;
}
bi mx(bi a,bi b)
{
if(a.len>b.len) return a;
if(a.len<b.len) return b;
for(int i=a.len;i>=1;i--)
{
if(a.d[i]>b.d[i]) return a;
if(a.d[i]<b.d[i]) return b;
}
return a;
}
bi mal(bi a,bi b)
{
bi c;
c.len=a.len+b.len-1;
for(int i=1;i<=a.len;i++)
{
for(int j=1;j<=b.len;j++)
{
c.d[i+j-1]+=a.d[i]*b.d[i];
}
}
for(int i=1;i<=c.len;i++)
{
c.d[i+1]+=c.d[i]/10;
c.d[i]%=10;
}
if(c.d[c.len+1]==0) c.len++;
while(c.d[c.len]==0&&c.len>1) c.len--;
return c;
}
int main()
{
cin>>n>>m>>s+1;
for(int i=1;i<=n;i++)
{
dp[i][0]=val(1,i);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int k=j;k<i;k++)
{
dp[i][j]=mx(dp[i][j],mal(dp[k][j-1],val(k+1,i)));
}
}
}
for(int i=1;i<=dp[n][m].len;i++) cout<<dp[n][m].d[i];
return 0;
}