#define _CRT_SECURE_NO_WARNINGS#include<cstdio>#include<algorithm>#include<string>#include<cstring>usingnamespace std;constint N =100+5;char ss[N];
string dp[N][N], num[N][N];int n;
string add(string a, string b){
string ans;int num =0;for(int i = a.size()-1, j = b.size()-1; i >=0|| j >=0;){if(i >=0) num += a[i]-'0', i--;if(j >=0) num += b[j]-'0', j--;
ans += num %10+'0';
num /=10;}if(num) ans += num +'0';reverse(ans.begin(), ans.end());return ans;}intbig(string a, string b){if(a.size()> b.size())return1;if(a.size()< b.size())return0;for(int i =0; i < a.size(); i++){if(a[i]> b[i])return1;if(a[i]< b[i])return0;}return0;}
string Dp(int r,int left){
string& ans = dp[r][left];if(left ==0)return ans = num[0][r];if(left > r)return"-1";if(ans !="-1")return ans;for(int i =1; i <= r; i++){
string res =Dp(i -1, left -1);if(res =="-1")continue;
string sum =add(res, num[i][r]);if(ans =="-1"||big(ans, sum)) ans = sum;}return ans;}intmain(){for(int m;scanf("%d%s",&m, ss)==2;){
n =strlen(ss);for(int i =0; i <= n; i++)for(int j =0; j <= m; j++)
dp[i][j]="-1";for(int i =0; i < n; i++){
num[i][i]= ss[i];for(int j = i +1; j < n; j++)
num[i][j]= num[i][j -1]+ ss[j];}printf("%s\n",Dp(n -1, m).c_str());}return0;}
#define _CRT_SECURE_NO_WARNINGS#include<cstdio>#include<algorithm>#include<vector>#include<cstring>usingnamespace std;constint N =100+5;constint MOD =10000;constint L =4;struct Integer {
vector<int> v;Integer(char* s,int n){for(int i = n -1; i >=0; i -= L){int pre =max(0, i - L +1);int num =0;for(int j = pre; j <= i; j++)
num = num *10+ s[j]-'0';
v.push_back(num);}reverse(v.begin(), v.end());}Integer(){}
Integer add(Integer b){int num =0;
Integer res;for(int i = v.size()-1, j = b.v.size()-1; i >=0|| j >=0;){if(i >=0) num += v[i], i--;if(j >=0) num += b.v[j], j--;
res.v.push_back(num % MOD);
num /= MOD;}if(num) res.v.push_back(num);reverse(res.v.begin(), res.v.end());return res;}intbig(Integer b){if(v.size()> b.v.size())return1;if(v.size()< b.v.size())return0;for(int i =0; i < v.size(); i++){if(v[i]> b.v[i])return1;if(v[i]< b.v[i])return0;}return0;}voidprint(){for(int i =0; i < v.size(); i++){if(i ==0)printf("%d", v[i]);elseprintf("%04d", v[i]);}}};char ss[N];
Integer dp[N][N], num[N][N];int n;
Integer Dp(int r,int left){
Integer& ans = dp[r][left];if(left ==0)return ans = num[0][r];if(left > r)return ans;if(ans.v[0]!=-1)return ans;for(int i =1; i <= r; i++){
Integer res =Dp(i -1, left -1);if(res.v[0]==-1)continue;
Integer sum = res.add(num[i][r]);if(ans.v[0]==-1|| ans.big(sum)) ans = sum;}return ans;}intmain(){for(int m;scanf("%d%s",&m, ss)==2;){
n =strlen(ss);for(int i =0; i <= n; i++)for(int j =0; j <= m; j++)
dp[i][j].v.clear(), dp[i][j].v.push_back(-1);for(int i =0; i < n; i++)for(int j = i; j < n; j++)
num[i][j]=Integer(ss + i, j - i +1);
Integer res =Dp(n -1, m);
res.print(),printf("\n");}return0;}