← Home
 ```go
package main

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

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

	var n, m int
	fmt.Fscan(reader, &n, &m)

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

	if sum < n {
		fmt.Fprintln(writer, -1)
		return
	}

	limit := n / 2
	sumCapped := 0
	for i := 0; i < m; i++ {
		if a[i] > limit {
			sumCapped += limit
		} else {
			sumCapped += a[i]
		}
	}

	if sumCapped < n {
		fmt.Fprintln(writer, -1)
		return
	}

	type Album struct {
		cnt int
		id  int
	}

	albums := make([]Album, 0, m)
	for i := 0; i < m; i++ {
		cnt := a[i]
		if cnt > limit {
			cnt = limit
		}
		if cnt > 0 {
			albums = append(albums, Album{cnt, i + 1})
		}
	}

	sort.Slice(albums, func(i, j int) bool {
		return albums[i].cnt > albums[j].cnt
	})

	res := make([]int, n)
	pos := 0
	placed := 0

	for _, al := range albums {
		for j := 0; j < al.cnt; j++ {
			if placed >= n {
				break
			}
			res[pos] = al.id
			placed++
			pos += 2
			if pos >= n {
				pos = 1
			}
		}
		if placed >= n {
			break
		}
	}

	for i := 0; i < n; i++ {
		if i > 0 {
			fmt.Fprint(writer, " ")
		}
		fmt.Fprint(writer, res[i])
	}
	fmt.Fprintln(writer)
}
```