//dp[i][k]表示到第i个数时用了k个乘号,dp[i][k]=max(dp[i][k],dp[j][k-1]*mp[j+1][i]),
//(k+1<=i<=n),(k<=j<i),mp[j+1][i]表示j+1到i的数字字面值。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
int n,m;
char ch[100];
ll dp[70][10],mp[70][70];
void Init(){
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
int tmp=0;
for(int k=i;k<=j;k++)
tmp=tmp*10+(ch[k-1]-'0');
mp[i][j]=tmp;
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)==2)
scanf("%s",ch);
Init();
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++) dp[i][0]=mp[1][i];
for(int k=1;k<=m;k++){
for(int i=k+1;i<=n;i++){
for(int j=k;j<i;j++){
dp[i][k]=max(dp[i][k],dp[j][k-1]*mp[j+1][i]);
}
}
}
cout<<dp[n][m]<<endl;;
return 0;
}