package main import ( "bufio" "fmt" "log" "math" "os" "strconv" ) func main() { log.SetFlags(log.Lshortfile) a := nextInt() + 1 b := nextInt() if b >= a { fmt.Print("YES\n") } else { fmt.Printf("NO\n") } fmt.Println(intAbs(a - b)) } func intPow(a, b int) int { return int(math.Pow(float64(a), float64(b))) } func lcm(a, b int) int { return a * b / gcd(a, b) } func gcd(a, b int) int { if a < b { a, b = b, a } for b != 0 { a, b = b, a%b } return a } func intMax(a ...int) int { r := a[0] for i := 0; i < len(a); i++ { if r < a[i] { r = a[i] } } return r } func intMin(a ...int) int { r := a[0] for i := 0; i < len(a); i++ { if r > a[i] { r = a[i] } } return r } func intSum(a []int) (r int) { for i := range a { r += a[i] } return r } func intAbs(a int) int { if a < 0 { return -a } return a } type pair struct { a, b int } type pairs []pair func (p pairs) Len() int { return len(p) } func (p pairs) Swap(i, j int) { p[i], p[j] = p[j], p[i] } func (p pairs) Less(i, j int) bool { return p[i].b < p[j].b } var nextReader func() string func init() { nextReader = newScanner() } func newScanner() func() string { r := bufio.NewScanner(os.Stdin) r.Buffer(make([]byte, 1024), int(1e+11)) r.Split(bufio.ScanWords) return func() string { r.Scan() return r.Text() } } func nextString() string { return nextReader() } func nextInt64() int64 { v, _ := strconv.ParseInt(nextReader(), 10, 64) return v } func nextInt() int { v, _ := strconv.Atoi(nextReader()) return v } func nextInts(n int) []int { r := make([]int, n) for i := 0; i < n; i++ { r[i] = nextInt() } return r } func nextFloat64() float64 { f, _ := strconv.ParseFloat(nextReader(), 64) return f }