#include #include using namespace std; using namespace atcoder; using ll = long long; using ull = unsigned long long; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vs = vector; using vpi = vector>; using vpl = vector>; #define rep(i, s, n) for (int i = (s); i < (int)(n); ++i) #define repr(i, s, n) for (int i = (s); i >= (int)(n); --i) #define sz(x) ((int)(x).size()) template bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;} template bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;} auto _ = []{ios::sync_with_stdio(false); cin.tie(nullptr); return 0;}(); const int INFI = 1 << 30; const ll INFL = 1LL << 62; int main() { string s; cin >> s; int n=sz(s); bool jdg = 1; if(s[0]-'0'>5){ // 60~99 rep (i, 0, n){ cout<<5; } cout << '\n'; return 0; } for (auto x : s){ // 55~59 if((x - '0')<5){ jdg=0; break; } } if(jdg){ rep (i, 0, n){ cout<<5; } cout << '\n'; return 0; } if((s[0] - '0'<=4)){ //10~49 jdg = 1; for (auto x : s){ if((x - '0')<4){ //10~43 jdg=0; break; } } if(!jdg){ rep (i, 0, n-1){ cout<<5; } cout << '\n'; return 0; } } string ans=""; jdg=0; reverse (s.begin(), s.end()); rep (i, 0, n){ int m=(s[i]-'0'); if(m==4)ans.push_back ('4'); else if(m>=5)ans.push_back ('5'); else{ //~3 ans.push_back ('5'); s[i+1]=(char)(((s[i+1]-'0')-1)+'0'); } } reverse (ans.begin(), ans.end()); cout << ans << '\n'; return 0; }