package main import . "fmt" func main() { var n,m int Scan(&n,&m) if n == 1 { Println(0) return } else if n % 2 == 0 { Println(n*m) return } x := 0 for i := 32; i >= 0; i-- { b := 1 << i if b <= m { x = b break } } y := m^x for i := 32; i >= 0; i-- { b := 1 << i if (m&b) == 0 && (x|b)<=m && (y|b) <= m { x |= b y |= b } } ans := m*(n-1) if (x^y^m)==0 && x <= m && y <= m { ans = max(ans, m*(n-2) + x+y) } x = 0 for i := 32; i >= 0; i-- { b := 1 << i if b <= m-1 { x = b break } } y = (m-1)^x for i := 32; i >= 0; i-- { b := 1 << i if ((m-1)&b)==0 && (x|b) <= m && (y|b) <= m { x |= b y |= b } } if (x^y^(m-1))==0 && x <= m && y <= m { ans = max(ans, m*(n-3)+x+y+(m-1)) } Println(ans) }