#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-11;
const int INFINITE = 0x3f3f3f3f;
template <class T>
inline void checkmin(T &a, T b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T &a, T b) {
  if (b > a) a = b;
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
inline T lowbit(T n) {
  return (n ^ (n - 1)) & n;
}
template <class T>
inline int countbit(T n) {
  return (n == 0) ? 0 : (1 + countbit(n & (n - 1)));
}
typedef vector<int> VI;
typedef vector<VI> VII;
typedef vector<string> VS;
const long long MAXP = 1000000LL;
long long add(string a, string b, string c) {
  if (a.size() == 0 || b.size() == 0 || c.size() == 0) return -1LL * INFINITE;
  if ((a.size() > 1 && a[0] == '0') || (b.size() > 1 && b[0] == '0') ||
      (c.size() > 1 && c[0] == '0'))
    return -1LL * INFINITE;
  if (a.size() > 7 || b.size() > 7 || c.size() > 7) return -1LL * INFINITE;
  long long aa = 0;
  for (int i = (int)(0); i < (int)(a.size()); i++) aa = aa * 10 + (a[i] - '0');
  if (aa > MAXP) return -1LL * INFINITE;
  long long bb = 0;
  for (int i = (int)(0); i < (int)(b.size()); i++) bb = bb * 10 + (b[i] - '0');
  if (bb > MAXP) return -1LL * INFINITE;
  long long cc = 0;
  for (int i = (int)(0); i < (int)(c.size()); i++)
    cc = cc * 10LL + (c[i] - '0');
  if (cc > MAXP) return -1LL * INFINITE;
  return (aa + bb + cc);
}
int main() {
  ios::sync_with_stdio(false);
  string s;
  cin >> s;
  int l = (int)s.size();
  long long maxm = -1LL * INFINITE;
  for (int i = (int)(0); i < (int)(l - 2); i++)
    for (int j = (int)(i + 1); j < (int)(l - 1); j++) {
      string a = s.substr(0, i + 1);
      string b = s.substr(i + 1, j - i);
      string c = s.substr(j + 1);
      checkmax(maxm, add(a, b, c));
    }
  if (maxm == -1LL * INFINITE)
    cout << "-1\n";
  else
    cout << maxm << endl;
  return 0;
}
