← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n, m, d int
	if _, err := fmt.Fscan(in, &n, &m, &d); err != nil {
		return
	}

	c := make([]int, m)
	sum := 0
	for i := 0; i < m; i++ {
		fmt.Fscan(in, &c[i])
		sum += c[i]
	}

	water := n - sum
	if water > (m+1)*(d-1) {
		fmt.Fprintln(out, "NO")
		return
	}

	gaps := make([]int, m+1)
	rem := water
	for i := 0; i <= m; i++ {
		g := d - 1
		if rem < g {
			g = rem
		}
		gaps[i] = g
		rem -= g
	}

	ans := make([]int, n)
	pos := gaps[0]
	for i := 0; i < m; i++ {
		for j := 0; j < c[i]; j++ {
			ans[pos+j] = i + 1
		}
		pos += c[i]
		if i+1 < m {
			pos += gaps[i+1]
		}
	}

	fmt.Fprintln(out, "YES")
	for i := 0; i < n; i++ {
		if i > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, ans[i])
	}
	fmt.Fprintln(out)
}