use itertools::Itertools; use proconio::{input, marker::Usize1}; fn main() { input! { n: usize, mut a: [Usize1; n], b: [Usize1; n], } let mut bi = vec![0; n]; for i in 0..n { bi[b[i]] = i; } let mut p = vec![0; n]; for i in 0..n { p[i] = bi[a[i]]; } let mut ans = vec![a.clone()]; for k in 0..n { let mut i = k % 2; while i < n - 1 { if p[i] > p[i + 1] { p.swap(i, i + 1); a.swap(i, i + 1); } i += 2; } ans.push(a.clone()); } assert!(a == b); for r in ans { println!("{}", r.iter().map(|&val| val + 1).join(" ")); } }