fn main() { let mut temp = String::new(); std::io::stdin().read_line(&mut temp).ok(); let temp: Vec = temp.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let vs = temp.iter().take(4).copied().collect::>(); let n = temp[4]; let mut water = vec![0usize; 4]; water[0] = vs[0]; if n <= 10000000 { for j in 0..n { let idx = j%4; let nidx = (j+1)%4; let val = (vs[nidx] - water[nidx]).min(water[idx]); water[nidx] += val; water[idx] -= val; } println!("{}", water.iter().map(|&v| v.to_string()).collect::>().join(" ")); return; } let mut pattern = water.clone().to_owned(); loop { for j in 0..4 { let nidx = (j+1)%4; let val = (vs[nidx] - water[nidx]).min(water[j]); water[nidx] += val; water[j] -= val; } if water == pattern { break; } pattern = water.clone().to_owned(); } for j in 0..n%4 { let nidx = (j+1)%4; let val = (vs[nidx] - water[nidx]).min(water[j]); water[nidx] += val; water[j] -= val; } println!("{}", water.iter().map(|&v| v.to_string()).collect::>().join(" ")); }