#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include using namespace std; typedef long long ll; const int INF = 1<<30; const ll INFLL = 1LL<<60; const ll MOD = 998244353; const double INFD = 1.0E10; const int dx[4] = {1, 0, -1, 0}; const int dy[4] = {0, -1, 0, 1}; map dm = {{0, 'D'}, {1, 'L'}, {2, 'U'}, {3, 'R'}}; // const int dx[8] = {1, 1, 0, -1, -1, -1, 0, 1}; // const int dy[8] = {0, 1, 1, 1, 0, -1, -1, -1}; using Pair = pair; using mint = atcoder::modint998244353; // using mint = atcoder::modint1000000007; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15); string s; cin >> s; int n = s.size(); if (s.front() <= '3'){ string ans(n - 1, '5'); cout << ans << endl; } else if (s.front() == '4'){ bool flag = false; for (int i = 0; i < n; i++){ if (s[i] < '4') flag = true; else if (s[i] > '5') s[i] = '5'; } if (flag){ string ans(n - 1, '5'); cout << ans << endl; } else{ cout << s << endl; } } else if (s.front() == '5'){ bool flag = false; for (int i = 0; i < n; i++){ if (s[i] < '4') flag = true; else if (s[i] > '5') s[i] = '5'; } if (flag){ string ans(n, '5'); ans[0] = '4'; cout << ans << endl; } else{ cout << s << endl; } } else{ string ans(n, '5'); cout << ans << endl; } return 0; }