#include <bits/stdc++.h>
using namespace std;
#define hh putchar('\n')
#define kg putchar(' ')
#define debug puts("debug")
namespace quickread{
template<typename T> void read(T &x){
x=0;char c=getchar();T neg=0;
while(!isdigit(c)) neg|=!(c^'-'),c=getchar();
while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
if(neg) x=(~x)+1;
}
template<typename T> void write(T x){
if(x<0) putchar('-'),x=~x+1;
if(x>9) write(x/10);
putchar(x%10^48);
}
inline string readstr(){
char ch=getchar();string str="";
while(!isalnum(ch)) ch=getchar();
while(isalnum(ch)){str+=ch;ch=getchar();}
return str;
}
inline char readchar(){
char ch=getchar();
while(!isalnum(ch)) ch=getchar();
return ch;
}
}
using namespace quickread;
const int N=1e3+10,M=10,inf=2147483647;
int leng(int x){int len;while(x) ++len,x/=10;return len;}
struct int256{
int a[N],len;
int256() {memset(a,0,sizeof(a)),len=0;}
void print(){for(int i=len;i>=1;i--) write(a[i]);}
void operator = (int x){len=0;while(x) a[++len]=x%10,x/=10;}
void operator = (int256 x){len=x.len;for(int i=1;i<=len;i++) a[i]=x.a[i];}
};
int256 operator * (int256 A,int256 B){
int256 ans;
ans.len=A.len+B.len;
for(int i=1;i<=A.len;i++)
for(int j=1;j<=B.len;j++)
ans.a[i+j-1]+=A.a[i]*B.a[j];
for(int i=1;i<=ans.len;i++) ans.a[i+1]+=ans.a[i]/10,ans.a[i]%=10;
while(!ans.a[ans.len]) --ans.len;
return ans;
}
int256 operator * (int256 A,int x){
int256 ans;
ans.len=A.len+leng(x);
for(int i=1;i<=ans.len;i++) ans.a[i]=A.a[i]*x;
for(int i=1;i<=ans.len;i++) ans.a[i+1]+=ans.a[i]/10,ans.a[i]%=10;
while(!ans.a[ans.len]) --ans.len;
return ans;
}
bool operator < (int256 A,int256 B){
if(A.len!=B.len) return A.len<B.len;
for(int i=A.len;i>=1;i--) if(A.a[i]!=B.a[i]) return A.a[i]<B.a[i];
return 1;
}
int256 dp[N][M],ans;
int n,m,a[N];
int256 num(int l,int r){int256 mul;mul=1;for(int i=l;i<=r;i++) mul=mul*a[i];return mul;}
signed main(){
read(n),read(m);++m;
for(int i=1;i<=n;++i) a[i]=readchar()-'0';
dp[1][1]=num(1,1);
for(int i=2;i<=n;i++)
for(int k=1;k<=min(k,i);k++)
for(int j=k-1;j<i;j++)
dp[i][k]=dp[j][k-1]*num(j+1,i);
for(int i=1;i<=m;i++) ans=(ans<dp[n][i]?dp[n][i]:ans);
ans.print();
return 0;
}