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