use proconio::input; fn main() { input! { n: usize, m: usize } let ans = solve(n, m); println!("{ans}"); } fn solve(n: usize, m: usize) -> usize { if n % 2 == 0 { return n * m; } let mut less = 0; let mut ans = 0; for i in (0..30).rev() { if m >> i & 1 == 1 { ans += (n - 1) << i; less = (less + 1).min(n); } else { ans += (less / 2 * 2) << i; } } ans }