pub fn general_mod<T1, T2, T3>(l: T1, r: T2) -> Result<T3>where T1: Into<T3> + Debug, T2: Into<T3> + Debug, T3: CheckedRem,