```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)
}
```