#[inline]
pub fn mod_q(val: i64, q: u64) -> u64 {
let q = q as i64;
let mut r = val % q;
if r < 0 {
r += q;
}
r as u64
}
#[inline]
pub fn mod_q_centered(val: i64, q: u64) -> i64 {
let q = q as i64;
let mut r = val % q;
if r > q / 2 {
r -= q;
} else if r <= -q / 2 {
r += q;
}
r
}