pub fn partition<TI, TJ>(i: TI, j: TJ) -> (u32, u32, u32, u32) where
    TI: Into<u32>,
    TJ: Into<u32>,