package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, k int64
_, err := fmt.Fscan(reader, &n, &k)
if err != nil {
return
}
if n < k*(k+1)/2 {
fmt.Fprintln(writer, "NO")
return
}
a := make([]int64, 0, k)
var prev int64 = 0
currentN := n
for i := int64(1); i <= k; i++ {
remDays := k - i
sumMinRem := remDays * (remDays + 1) / 2
numerator := currentN - sumMinRem
if numerator < 0 {
fmt.Fprintln(writer, "NO")
return
}
limit := numerator / (remDays + 1)
var minNeeded int64
if remDays >= 31 {
minNeeded = 1
} else {
denom := (int64(1) << (remDays + 1)) - 1
minNeeded = (currentN + denom - 1) / denom
}
low := prev + 1
if i == 1 {
low = 1
}
if minNeeded > low {
low = minNeeded
}
high := prev * 2
if i == 1 {
high = limit + 1
}
if limit < high {
high = limit
}
if low > high {
fmt.Fprintln(writer, "NO")
return
}
val := low
a = append(a, val)
currentN -= val
prev = val
}
fmt.Fprintln(writer, "YES")
for i, x := range a {
if i > 0 {
fmt.Fprint(writer, " ")
}
fmt.Fprint(writer, x)
}
fmt.Fprintln(writer)
}