```go
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
}
// Minimal sum check: 1 + 2 + ... + k
// k <= 10^5, so k*(k+1)/2 approx 5*10^9, fits in int64
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
// Calculate upper bound (limit) for a_i based on remaining sum
// Condition: currentN - a_i >= MinSum(remDays terms starting > a_i)
// MinSum = (a_i+1) + ... + (a_i+remDays) = a_i*remDays + remDays*(remDays+1)/2
// currentN - a_i >= a_i*remDays + remDays*(remDays+1)/2
// currentN - remDays*(remDays+1)/2 >= a_i*(remDays + 1)
sumMinRem := remDays * (remDays + 1) / 2
numerator := currentN - sumMinRem
if numerator < 0 {
fmt.Fprintln(writer, "NO")
return
}
limit := numerator / (remDays + 1)
// Calculate lower bound (minNeeded) for a_i based on remaining sum
// Condition: currentN - a_i <= MaxSum(remDays terms starting <= 2*a_i)
// MaxSum allows doubling: a_i, 2a_i, 4a_i...
// Sum of sequence a_i...a_k <= a_i * (2^(remDays+1) - 1)
// currentN <= a_i * (2^(remDays+1) - 1)
var minNeeded int64
// If remDays is large, 2^(remDays+1) exceeds int64 or definitely exceeds n
if remDays >= 31 {
minNeeded = 1
} else {
denom := (int64(1) << (remDays + 1)) - 1
minNeeded = (currentN + denom - 1) / denom
}
// Determine valid range [low, high] for a_i
low := prev + 1
if i == 1 {
low = 1
}
if minNeeded > low {
low = minNeeded
}
high := prev * 2
if i == 1 {
high = limit + 1 // Effectively unbounded by previous term
}
if limit < high {
high = limit
}
if low > high {
fmt.Fprintln(writer, "NO")
return
}
// Greedy strategy: pick the smallest valid value to satisfy conditions
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)
}
```