rt,QwQ.
#include <iostream>
#include <algorithm>
using namespace std;
int n, ans[1000010], Ans[1000010], mncnt;
string s;
void Add(string a, string b, int i) {
reverse(a.begin(), a.end()); // 翻转
reverse(b.begin(), b.end());
int Len = max(int(a.size()), int(b.size())), cnt = 0;
bool flag = false;
for (int i = 0; i < Len; i++) { // 下面是高精加板子
int A, B;
if (a[i] >= '0' && a[i] <= '9') A = (a[i] - '0');
else A = 0;
if (b[i] >= '0' && b[i] <= '9') B = (b[i] - '0');
else B = 0;
int k = A + B;
ans[++cnt] = (k % 10 + flag);
if (k >= 10) flag = true;
else if (ans[cnt] >= 10) ans[cnt] %= 10, flag = true;
else flag = false;
}
if (flag) ans[++cnt] = 1;
reverse(ans + 1, ans + 1 + cnt);
if (i == 1) {
for (int i = 1; i <= cnt; i++)
Ans[i] = ans[i];
mncnt = cnt;
}
else { // 取最小
if (cnt < mncnt) {
mncnt = cnt;
for (int i = 1; i <= mncnt; i++)
Ans[i] = ans[i];
}
else if (cnt == mncnt) {
for (int i = 1; i <= cnt; i++)
if (ans[i] < Ans[i]) {
for (int j = 1; j <= cnt; j++)
Ans[j] = ans[j];
break;
}
}
}
}
int main()
{
cin >> n >> s;
for (int i = 1; i < n; i++) {
string a = s.substr(0, i); // 这块应该没错吧
string b = s.substr(i);
Add(a, b, i);
}
for (int i = 1; i <= mncnt; i++) cout << Ans[i];
return 0;
}