← Home
 ```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	scanner.Scan()
	t, _ := strconv.Atoi(scanner.Text())
	for ; t > 0; t-- {
		scanner.Scan()
		n, _ := strconv.Atoi(scanner.Text())
		p := make([]int, n)
		for i := 0; i < n; i++ {
			scanner.Scan()
			p[i], _ = strconv.Atoi(scanner.Text())
		}
		idx := make([]int, n)
		for i := 0; i < n; i++ {
			idx[i] = i
		}
		sort.Slice(idx, func(i, j int) bool {
			return p[idx[i]] < p[idx[j]]
		})
		q := make([]int, n)
		left, right := 1, n
		for i := 0; i < n; i++ {
			if i%2 == 0 {
				q[idx[i]] = right
				right--
			} else {
				q[idx[i]] = left
				left++
			}
		}
		for i := 0; i < n; i++ {
			if i > 0 {
				fmt.Print(" ")
			}
			fmt.Print(q[i])
		}
		fmt.Println()
	}
}
```