← Home
```go
package main

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

type Pair struct {
	val int64
	idx int
}

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

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

	pairs := make([]Pair, n)
	for i := 0; i < n; i++ {
		var v int64
		fmt.Fscan(in, &v)
		pairs[i] = Pair{v, i}
	}

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

	km := m * k
	selected := make([]bool, n)
	var sum int64
	for i := 0; i < km; i++ {
		sum += pairs[i].val
		selected[pairs[i].idx] = true
	}

	cuts := make([]int, 0, k-1)
	cnt := 0
	need := k - 1
	for i := 0; i < n; i++ {
		if selected[i] {
			cnt++
		}
		if cnt == m && need > 0 {
			cuts = append(cuts, i+1)
			cnt = 0
			need--
		}
	}

	fmt.Fprintln(out, sum)
	for i := 0; i < len(cuts); i++ {
		if i > 0 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, cuts[i])
	}
	if len(cuts) > 0 {
		fmt.Fprintln(out)
	}
}
```