package main import ( "bufio" "fmt" "os" "strconv" ) type Point struct { x, y int } func main() { sc := bufio.NewScanner(os.Stdin) sc.Split(bufio.ScanWords) sc.Scan(); x, _ := strconv.Atoi(sc.Text()) sc.Scan(); y, _ := strconv.Atoi(sc.Text()) offsets := []Point{ Point{-2, -1}, Point{-2, +1}, Point{-1, -2}, Point{-1, +2}, Point{+1, -2}, Point{+1, +2}, Point{+2, -1}, Point{+2, +1}, } visited := make(map[Point]bool) visited[Point{0, 0}] = true for i := 0; i < 3; i++ { points_to := make(map[Point]bool) for point, _ := range visited { for _, offset := range offsets { point_to := Point{point.x + offset.x, point.y + offset.y} if (!visited[point_to]) { points_to[point_to] = true } } } for point_to, _ := range points_to { visited[point_to] = true } } if visited[Point{x, y}] { fmt.Println("YES") } else { fmt.Println("NO") } }