#include<bits/stdc++.h>
#define N 49
using namespace std;
int n,k,idx=0;
int num[N];
//int dp[N][N],a[N][N];
int a[N][N][N];
int dp[N][N][N];
int main()
{
//PART 1
scanf("%d%d",&n,&k);
char ch;
while(cin>>ch) num[++idx]=ch-'0';
//PART 2
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
//a[i][j]=a[i][j-1]*10+num[j];
a[i][j][1]=num[j];
for(int m=1;m<=a[i][j-1][0];m++) a[i][j][m+1]=a[i][j-1][m];
a[i][j][0]=a[i][j-1][0]+1;
}
}
for(int i=1;i<=n;i++)
{
//dp[i][0]=a[1][i];
for(int j=0;j<=a[1][i][0];j++) dp[i][0][j]=a[1][i][j];
}
//PART 3
for(int len=1;len<=n;len++)
{
for(int m=1;m<=k;m++)
{
for(int i=1;i<len;i++)
{
//dp[len][m]=max(dp[len][m],dp[i][m-1]*a[i+1][len]);
//-----------------------------------
//PART 3.1 dp[i][m-1]*a[i+1][len]改为高精度乘法
int sum[N][N]={};
for(int ii=1;ii<=dp[i][m-1][0];ii++)
{
for(int jj=1;jj<=dp[i+1][len][0];jj++)
{
sum[ii][ii+jj-1]=dp[i][m-1][ii]*dp[i+1][len][jj];
}
for(int jj=1;jj<ii+dp[i+1][len][0];jj++)
{
sum[ii][jj+1]+=sum[ii][jj]/10;
sum[ii][jj]%=10;
}
}
int mum[N]={};//乘后的答案
for(int ii=1;ii<=dp[i][m-1][0]+dp[i+1][len][0];ii++)
{
long long s=0;
for(int jj=1;jj<=dp[i+1][len][0];jj++)
{
s+=sum[ii][jj];
}
mum[ii+1]+=s/10;
mum[ii]=s%10;
}
for(int ii=N-1;ii>=1;ii--)//判断数位
{
if(mum[ii]!=0)
{
mum[0]=ii;
break;
}
}
//PART 3.2 dp[len][m]=max(dp[len][m], );改为高精度比较,赋值
if(mum[0]>dp[len][m][0])
{
for(int ii=0;ii<=mum[0];ii++) dp[len][m][ii]=mum[ii];
}
else if(mum[0]==dp[len][m][0])
{
for(int ii=mum[0];ii>=1;ii--)
{
if(mum[ii]>dp[len][m][ii])
{
for(int jj=0;jj<=mum[0];jj++) dp[len][m][jj]=mum[jj];
break;
}
else if(mum[ii]<dp[len][m][ii]) break;
}
}
//---------------------------------
}
}
}
//PART 4
//printf("%d\n",dp[n][k][0]);
for(int i=dp[n][k][0];i>=1;i--) printf("%d",dp[n][k][i]);
return 0;
}