
#include<bits/stdc++.h>
using namespace std;
int a[210], f[210][21][210], w[210][21],c[210];
int r(){
int x = 1;
a[0] = 1;
while(a[x - 1] > 0){
a[x] = getchar();
a[x] -= '0';
x++;
}
return (x - 2);
}
int wh(int x){
if(x > 9){
wh(x / 10);
}
putchar(x % 10 + '0');
}
void ch(int z){
for(int i = 1; i <= z; i++){
int x = 0;
for(int j = 1; j <= i; j++){
f[i][0][++x] = a[j];
}
w[i][0] = x;
}
}
void t(int l, int i2, int j2){
for(int i = 1; i <= l; i++){
f[i2][j2][i] = c[i];
}
w[i2][j2] = l;
}
void co(int ln, int lp, int i1, int j1){
int q;
if(ln < lp){
t(ln, i1, j1);
return ;
}
if(ln > lp){
return ;
}
for(int i = ln; i >= 1; i--){
if(f[i1][j1][i] < c[q]){
return ;
}
if(f[i1][j1][i] < c[q]){
t(ln, i1, j1);
return ;
}
}
}
void fi(int i0, int j0, int k0){
int lon1, lon2, lon3, lon;
memset(c, 0, sizeof(c));
for(int i = 1; i <= w[k0][j0 - 1]; i++){
c[i] = f[k0][j0 - 1][i];
}
lon1 = w[k0][j0 - 1];
lon2 = i0 - (k0 + 1) + 1;
if(lon2 > lon1){
c[lon2 + 1] = 0;
for(int i = lon1 + 1; i <= lon2; i++){
c[i] = 0;
}
lon = lon2;
}
else if(lon1 > lon2){
c[lon1 + 1] = 0;
lon = lon1;
}
else{
lon = lon1;
}
int ch = k0 + 1;
for(int i = 1; i <= lon; i++){
if(ch > i0 + 1){
break;
}
c[i] += a[ch++];
}
for(int i = 1; i <= lon; i++){
if(c[i] >= 10){
c[i + 1] += c[i] / 10;
c[i] = c[i] % 10;
if(i == lon){
lon++;
break;
}
}
}
co(lon, w[i0][j0], i0, j0);
}
int main() {
int n, e, z;
z = r();
cin >> n;
for(int i = 1; i <= z / 2; i ++){
swap(a[i], a[z - i + 1]);
}
for(int i = 1; i <= 200; i++){
for(int j = 1; j <= 20; j++){
for(int k = 1; k <= 200; k++){
f[i][j][k] = 10000;
}
}
}
for(int i = 1; i <= 200; i++){
for(int j = 1; j <= 20; j++){
w[i][j] = 300;
}
}
ch(z);
for(int i = 2; i <= z; i++){
for(int j = 1; j <= min(i - 1, n); j++){
for(int k = j; k <= i - 1; k++){
fi(i, j, k);
}
}
}
for(int i = w[z][n]; i >= 1; i--){
wh(f[z][n][i]);
}
return 0;
}