// cteam05

#include <bits/stdc++.h>
using namespace std;

#define F(W) for(int i = 0; i < W; i++)
#define FF(W) for(int j = 0; j < W; j++)
#define FFF(W) for(int k = 0; k < W; k++)
#define ZERO (1e-10)
#define EPS ZERO
#define INF (1 << 30)
#define LINF (1LL << 60)
#define NINF (-(1 << 30))
#define MP(A, B) make_pair(A, B)
#define PBC(G, A) G.push_back(A);
#define CL(A, I) (memset(A, I, sizeof(A)))
#define ADD(A, B, V) (g[A].push_back(B); g[B].push_back(A); v[A].push_back(V); v[B].push_back(V))
#define add(A, B) (g[A].push_back(B); g[B].push_back(A))
#define DEB printf("DEB!\n");
#define DEX printf("DEX!\n");
#define DRI(a) int a; scanf("%d ", &a);
#define DRII(a, b) int a, b; scanf("%d %d ", &a, &b);
#define DRIII(a, b, c) int a, b, c; scanf("%d %d %d %d ", &a, &b, &c);
#define DRIIII(a, b, c, d) int a, b, c, d; scanf("%d %d %d %d ", &a, &b, &c, &d);
#define EQ(A, B) (A+ZERO>B&&A-ZERO<B)
#define FND(P, K, N) (lower_bound(P, P+N, K)-P);
#define SW(A, B) (swap(A, B))
#define REP(i, n) for (int i = 0; i < n; i++)
#define IN(n) int n; cin >> n;
#define PB push_back

typedef long long ll;
typedef unsigned long long llu;
typedef pair<int, int> pii;
typedef pair<int, int> ii;
typedef pair<int, double> pid;
typedef pair<ll, ll> pll;
typedef vector<int> vi;

int tn(char c)
{
    return c - '0';
}

static int s[100012];

void minuz(string& st)
{
    int n = st.length();
    for (int i = 1; i < n; i++) {
        s[i-1] = tn(st[i]);
    }
    n--;

    for (int i = n - 1; i >= 0; i--) {
        if (i == 0 && s[i] == 9)
            s[i] = 19;
        if (s[i] < 9) {
            s[i] += 1;
            break;
        }
    }

    cout << '-';
    bool strt = 0;
    REP(i, n) {
        if (!strt) {
            if (s[i] == 0)
                continue;
            else
                strt = 1;
        }
        cout << s[i];
    }
    cout << endl;
}


int main() {
    ios::sync_with_stdio(false);


    while (1) {
        string st;
        getline(cin, st);
        if (st[0] == 'E')
            break;
        if (st[0] == '-') {
            minuz(st);
            continue;
        }

        int n = st.length();
        REP(i, n) {
            s[i] = tn(st[i]);
        }

        int inc = 0;
        bool flag = 0;
        for (int i = n - 1; i >= 0; i--) {

            if (inc < 2) {
                // cout << "MODE INC" << endl;
                if (i == 0) {
                    string mst = "-" + st;
                    minuz(mst);
                    flag = 1;
                    break;
                    /*
                    s[0] = -(tn(st[0]));
                    if (inc == 1) {
                        s[eightin] = 9;
                        break;
                    }
                    s[0] -= 1;
                    if (s[0] < -9) {
                        s[0] = -19;
                    }
                    break;
                    */
                }
                inc += -(s[i] - 9);
                /*
                if (s[i] == 8) {
                    eightin = i;
                }
                */

            } else {

                // cout << "MODE FIND" << endl;
                if (s[i] > 0) {
                    s[i] -= 1;
                    int buff = 2;
                    for (int j = i + 1; j < n; j++) {
                        if (s[j] < 8) {
                            s[j] += 2;
                            break;
                        } else if (s[j] == 8) {
                            s[j] += 1;
                            buff--;
                            if (buff == 0)
                                break;
                        }
                    }
                    break;
                }
            }
        }

        if (flag)
            continue;

        bool strt = 0;
        REP(i, n) {
            if (!strt) {
                if (s[i] == 0)
                    continue;
                else
                    strt = 1;
            }
            cout << s[i];
        }
        cout << endl;
    }

    return 0;
}