#include <bits/stdc++.h>
using namespace std;
bool SR(int &x) { return scanf("%d", &x) == 1; }
bool SR(long long &x) { return scanf("%lld", &x) == 1; }
bool SR(double &x) { return scanf("%lf", &x) == 1; }
bool SR(char *s) { return scanf("%s", s) == 1; }
bool RI() { return true; }
template <typename I, typename... T>
bool RI(I &x, T &...tail) {
  return SR(x) && RI(tail...);
}
void SP(const int x) { printf("%d", x); }
void SP(const long long x) { printf("%lld", x); }
void SP(const double x) { printf("%.16lf", x); }
void SP(const char *s) { printf("%s", s); }
void PL() { puts(""); }
template <typename I, typename... T>
void PL(const I x, const T... tail) {
  SP(x);
  if (sizeof...(tail)) putchar(' ');
  PL(tail...);
}
const int maxn = 1e5 + 5;
char s[maxn];
int n;
void read() {
  RI(s);
  n = strlen(s);
}
int a[maxn];
void build() {
  for (int i = 0; i < int(n); i++) a[i] = s[i] - '0';
}
bool ok(int l, int r) {
  ;
  if (a[l] < a[r]) return 0;
  if (l == r) return 0 <= a[l] && a[l] <= 18 && a[l] % 2 == 0;
  if (l + 1 == r) {
    if (a[l] < 0 || a[l] > 19) return 0;
    if ((a[l] - a[r]) % 10 == 0) return a[l] == a[r] && 0 <= a[l] && a[l] <= 18;
    if (((a[l] - a[r]) % 10 + 10) % 10 == 1) {
      a[l]--;
      a[r] += 10;
      return a[l] == a[r] && 0 <= a[l] && a[l] <= 18;
    }
    return 0;
  }
  if (a[l] < 0 || a[l] > 19) return 0;
  if ((a[l] - a[r]) % 10 == 0) {
    a[r - 1] -= (a[l] - a[r]) / 10;
    a[r] = a[l];
    return 0 <= a[l] && a[l] <= 18 && ok(l + 1, r - 1);
  }
  if (((a[l] - a[r]) % 10 + 10) % 10 == 1) {
    a[l]--;
    a[l + 1] += 10;
    a[r - 1] -= (a[l] - a[r]) / 10;
    a[r] = a[l];
    return 0 <= a[l] && a[l] <= 18 && ok(l + 1, r - 1);
  }
  return 0;
}
void sol() {
  if (ok(0, n - 1) && a[0] - a[0] / 2) {
    for (int i = 0; i < int(n / 2); i++) putchar(a[i] - a[i] / 2 + '0');
    for (int i = (n / 2); i <= int(n - 1); i++) putchar(a[i] / 2 + '0');
    PL();
    return;
  }
  if (n == 1) {
    PL(0);
    return;
  }
  for (int i = 0; i < int(n); i++) a[i] = s[i] - '0';
  a[1] += a[0] * 10;
  a[0] = 0;
  rotate(a, a + 1, a + n);
  n--;
  if (ok(0, n - 1) && a[0] - a[0] / 2) {
    for (int i = 0; i < int(n / 2); i++) putchar(a[i] - a[i] / 2 + '0');
    for (int i = (n / 2); i <= int(n - 1); i++) putchar(a[i] / 2 + '0');
    PL();
    return;
  }
  PL(0);
}
int main() {
  read();
  build();
  sol();
  return 0;
}
