#include<iostream>
#include<algorithm>
#include<cstdio>
#define ll long long
using namespace std;
const ll maxn = 101;
ll n, k;
ll a[maxn];
char s;
struct num {
ll len;
ll ary[maxn];
};
num maxs, c, ls;
num mul(num x,ll y) {
for (ll i = 0; i < x.len; i++)x.ary[i] *= y;
for (ll i = 0; i < x.len; i++) {
x.ary[i + 1] += x.ary[i] / 10;
x.ary[i] %= 10;
}
while (x.ary[x.len]) {
x.ary[x.len + 1] += x.ary[x.len] / 10;
x.ary[x.len] %= 10;
x.len++;
}
return x;
}
num add(num x,ll y) {
x.ary[0] += y;
for (ll i = 0; i < x.len; i++) {
x.ary[i + 1] += x.ary[i] / 10;
x.ary[i] %= 10;
}
while (x.ary[x.len]) {
x.ary[x.len + 1] += x.ary[x.len] / 10;
x.ary[x.len] %= 10;
x.len++;
}
return x;
}
void print(num x) {
for (ll i = x.len - 1; i >= 0; i--) {
printf("%lld", x.ary[i]);
}
printf("\n");
return;
}
num mul(num x, num y) {
num ls;
for (ll i = 0; i < maxn; i++) {
ls.ary[i] = 0;
}
for (ll i = 0; i < x.len; i++) {
for (ll j = 0; j < y.len; j++) {
ls.ary[i + j] += x.ary[i] * y.ary[j];
}
}
ls.len = x.len + y.len - 1;
for (ll i = 0; i < ls.len; i++) {
ls.ary[i + 1] += ls.ary[i] / 10;
ls.ary[i] %= 10;
}
while (ls.ary[ls.len]) {
ls.ary[ls.len + 1] += ls.ary[ls.len] / 10;
ls.ary[ls.len] %= 10;
ls.len++;
}
return ls;
}
num maxx(num x, num y) {
if (x.len < y.len)return y;
if (x.len > y.len)return x;
for (ll i = x.len - 1; i >= 0; i--) {
if (x.ary[i] < y.ary[i])return y;
if (x.ary[i] > y.ary[i])return x;
}
return x;
}
void dfs(ll x, num ans, ll last) {
if (x == k) {
ls.len = 0;
ls.ary[0] = 0;
for (ll i = last + 1; i < n; i++) {
ls = add(ls, a[i]);
ls = mul(ls, 10);
}
ls = add(ls, a[n]);
ans = mul(ans,ls);
maxs = maxx(maxs, ans);
return;
}
for (ll i = last + 1; i <= n - k + x; i++) {
ls.len = 0;
ls.ary[0] = 0;
for (ll j = last + 1; j < i; j++) {
ls = add(ls,a[j]);
print(ls);
ls = mul(ls,10);
}
ls = add(ls,a[i]);
dfs(x + 1, mul(ans, ls), i);
}
return;
}
int main() {
scanf("%lld%lld", &n, &k);
for (ll i = 1; i <= n; i++) {
cin >> s;
a[i] = s - '0';
}
c.len = 1;
c.ary[0] = 1;
dfs(0, c, 0);
print(maxs);
return 0;
}