#include<bits/stdc++.h>
using namespace std;
string s,f[41][7];
int m[100000],n[100000],c[100000];
string mul(string a,string b){
int lena,lenb,x;
lena=a.size();
lenb=b.size();
for(int i=1;i<=lena;++i){
m[i]=a[lena-i]-'0';
}
for(int i=1;i<=lenb;++i){
n[i]=b[lenb-i]-'0';
}
for(int i=1;i<=lena+lenb;++i){
c[i]=0;
}
for(int i=1;i<=lenb;++i){
x=0;
for(int j=1;j<=lena;++j){
c[i+j-1]+=m[j]*n[i]+x;
x=c[i+j-1]/10;
x=c[i+j-1]%=10;
}
c[i+lena]=x;
}
string k;
bool flag=true;
for(int i=lena+lenb;i>0;--i){
if(c[i]!=0){
for(int j=i;j>0;j--){
k+=c[j]+48;
}
flag=false;
break;
}
}
if(flag){
return "0";
}
return k;
}
string maxn(string a,string b){
if(a.size()!=b.size()){
return a.size()>b.size()?a:b;
}
}
string a(int start,int end){
string cnt;
while(start<=end){
cnt+=s[start];
start++;
}
return cnt;
}
int main(){
int n,k;
cin>>n>>k;
char q;
s.resize(1);
for(int i=1;i<=n;++i){
cin>>q;
s+=q;
}
for(int i=1;i<=n;++i){
f[i][0]=a(1,i);
}
for(int i=1;i<=n;++i){
for(int j=1;j<=k;++j){
for(int l=1;l<i;++l){
f[i][j]=maxn(f[i][j],mul(f[l][j-1],a(l+1,i)));
}
}
}
cout<<f[n][k];
return 0;
}