#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
int n,K,a[45];
char x;
long long dp[45][45];
while(cin>>n>>K){
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
cin>>x;a[i]=x-'0';
}
for(int k=1;k<=K;k++){
for(int i=k+1;i<=n;i++){
for(int j=k;j<i;j++){
int index1=1,num1=0,index2=j+1,num2=0;
while(index1<=j){
num1=num1*10+a[index1];index1++;
}
while(index2<=i){
num2=num2*10+a[index2];index2++;
}
if(k==1) dp[i][k]=max(dp[i][k],(long long)num1*num2);//只插入一个乘号
else dp[i][k]=max(dp[i][k],dp[j][k-1]*num2);
}
}
}
cout<<dp[n][K]<<endl;
}
return 0;
}
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
int n,K,a[45];
char x;
long long dp[45][45];
while(cin>>n>>K){
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
cin>>x;a[i]=x-'0';
}
for(int k=1;k<=K;k++){
for(int i=k+1;i<=n;i++){
for(int j=k;j<i;j++){
int index1=1,num1=0,index2=j+1,num2=0;
while(index1<=j){
num1=num1*10+a[index1];index1++;
}
while(index2<=i){
num2=num2*10+a[index2];index2++;
}
if(k==1) dp[i][k]=max(dp[i][k],(long long)num1*num2);//只插入一个乘号
else dp[i][k]=max(dp[i][k],dp[j][k-1]*num2);
}
}
}
cout<<dp[n][K]<<endl;
}
return 0;
}