```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var n, k int
fmt.Scan(&n, &k)
count := 0
freq := make([]int, 30)
for i := 0; i < 30; i++ {
if (n>>i)&1 == 1 {
freq[i]++
count++
}
}
if k < count || k > n {
fmt.Println("NO")
return
}
fmt.Println("YES")
for i := 29; i >= 1; i-- {
for freq[i] > 0 && count < k {
freq[i]--
freq[i-1] += 2
count++
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 0; i < 30; i++ {
for freq[i] > 0 {
fmt.Fprintf(out, "%d ", 1<<i)
freq[i]--
}
}
fmt.Fprintln(out)
}
```