use itertools::Itertools; use proconio::{input, marker::Bytes}; fn main() { input! { mut n: Bytes } n.iter_mut().for_each(|n| *n -= b'0'); if let Some(i) = n.iter().position(|&n| !(4..=5).contains(&n)) { if n[i] < 4 { if let Some(j) = n[..i].iter().rposition(|&n| n == 5) { n[j] = 4; n[j + 1..].fill(5); } else { n.fill(5); n.pop(); } } else { n[i..].fill(5); } } println!("{}", n.iter().join("")); }