func_code_string: #include <bits/stdc++.h>   using namespace std;   const int Nmax = 100000 + 10;   int n;   int nr[Nmax];   char s[Nmax], ans[Nmax];   bool ok(int L, int R) {     int i, sum;     if (L > R) return 0;     for (i = 1; i <= n; ++i) nr[i] = s[i] -  0 ;     if (L == 1 && nr[R] == 0) return 0;     if (L == 2 && nr[1] != 1) return 0;     for (nr[L] += nr[L - 1] * 10; true; L++, R--) {       if (L == R) {         ans[L] = nr[L] / 2 +  0 ;         return nr[L] % 2 == 0;       }       if (L + 1 == R) {         sum = nr[L];         if (nr[L] == nr[R] + 11) sum--;         ans[L] = ans[R] = sum / 2 +  0 ;         if (sum & 1) ans[L]++;         return (nr[L] == nr[R] || nr[L] == nr[R] + 11);       }       if (nr[L] - nr[R] != 0 && nr[L] - nr[R] != 1 && nr[L] - nr[R] != 10 &&           nr[L] - nr[R] != 11)         return 0;       sum = nr[L];       if (nr[L] == nr[R])         ;       if (nr[L] == nr[R] + 1 || nr[L] == nr[R] + 11) sum--, nr[L + 1] += 10;       if (nr[L] == nr[R] + 10 || nr[L] == nr[R] + 11) {         if (nr[R] == 9) return 0;         for (i = R - 1; i >= L && nr[i] == 0; --i) nr[i] = 9;         if (i == L) return 0;         nr[i]--;       }       ans[L] = ans[R] = sum / 2 +  0 ;       if (sum & 1) ans[L]++;       int mata = 5;     }     return 1;   }   int main() {     gets(s + 1);     n = strlen(s + 1);     if (ok(1, n))       puts(ans + 1);     else if (ok(2, n))       puts(ans + 2);     else       puts( 0 );     return 0;   }   