fn main() { let mut cc: Vec = { let mut line = String::new(); std::io::stdin().read_line(&mut line).unwrap(); line.trim().chars().collect() }; cc.reverse(); let n = cc.len(); let mut counts = [0_u32; 8]; for i in (0..n).step_by(3) { let mut val = cc[i].to_digit(16).unwrap(); if i + 1 < n { val += 16 * (cc[i + 1]).to_digit(16).unwrap(); } if i + 2 < n { val += 256 * (cc[i + 2]).to_digit(16).unwrap(); } for _ in 0..4 { counts[(val % 8) as usize] += 1; val /= 8; if val == 0 && i + 3 >= n { break; } } } let max = *counts.iter().max().unwrap(); let mut max_indexes = vec![]; for (i, &cnt) in counts.iter().enumerate() { if cnt == max { max_indexes.push(i); } } print!("{}", max_indexes[0]); for &idx in max_indexes.iter().skip(1) { print!(" {}", idx); } println!(); }