#include <bits/stdc++.h>
using namespace std;
long int StringToInt(string s) {
  stringstream convert(s);
  long int N;
  convert >> N;
  if (s.size() > 7 || N > 1000000 || (s.size() > 1 && s[0] == '0')) {
    N = -1;
  }
  return N;
}
void FindAllPossibleNums(string s, int x[3], vector<long long int> &v,
                         vector<vector<long long int> > &ThreeNums) {
  for (int i = 1; i < s.size() - 1; i++) {
    for (int ii = 1; ii < s.size() - i; ii++) {
      v.push_back(StringToInt(s.substr(0, i)));
      v.push_back(StringToInt(s.substr(i, ii)));
      v.push_back(StringToInt(s.substr(ii + i, s.size() - (i + ii))));
      ThreeNums.push_back(v);
      v.clear();
    }
  }
}
long long int FindTheRightNum(vector<vector<long long int> > ThreeNums) {
  long long int sum = 0, TheRightNum = -1;
  for (int i = 0; i < ThreeNums.size(); i++) {
    for (int ii = 0; ii < 3; ii++) {
      if (ThreeNums[i][ii] == -1) {
        sum = -1;
        break;
      } else
        sum += ThreeNums[i][ii];
    }
    if (sum > TheRightNum) {
      TheRightNum = sum;
    }
    sum = 0;
  }
  return TheRightNum;
}
int main() {
  vector<vector<long long int> > ThreeNums;
  vector<long long int> v;
  int x[3] = {1, 1, 1};
  string s;
  cin >> s;
  for (int i = 0; i < 3; i++) {
    for (; x[i] < 6 && x[0] + x[1] + x[2] != s.size();) {
      x[i]++;
    }
  }
  FindAllPossibleNums(s, x, v, ThreeNums);
  if (s.size() < 3 || s.size() > 22) {
    cout << "-1";
  } else
    cout << FindTheRightNum(ThreeNums);
  return 0;
}
