macro_rules! swap_n {
    ($first:expr, $second:expr, $($e:expr),+) => { ... };
    ($first:expr, $second:expr) => { ... };
    ($first:expr) => { ... };
}