← Home
```go
package main

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

type Pair struct {
	a   int
	idx int
}

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

	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}
	pairs := make([]Pair, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &pairs[i].a)
		pairs[i].idx = i + 1
	}

	sort.Slice(pairs, func(i, j int) bool {
		if pairs[i].a == pairs[j].a {
			return pairs[i].idx < pairs[j].idx
		}
		return pairs[i].a < pairs[j].a
	})

	var ans int64 = int64(n)
	for i := 0; i < n; i++ {
		ans += int64(i) * int64(pairs[i].a)
	}

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