← Home
```go
package main

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

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	t, _ := strconv.Atoi(scanner.Text())
	for test := 0; test < t; test++ {
		scanner.Scan()
		n, _ := strconv.Atoi(scanner.Text())
		a := make([]int, n)
		for i := 0; i < n; i++ {
			scanner.Scan()
			a[i], _ = strconv.Atoi(scanner.Text())
		}
		paths := make([][]int, n)
		stack := make([]int, 0)
		for i := 0; i < n; i++ {
			if a[i] == 1 {
				stack = append(stack, 1)
			} else {
				for len(stack) > 0 && stack[len(stack)-1] != a[i]-1 {
					stack = stack[:len(stack)-1]
				}
				stack[len(stack)-1] = a[i]
			}
			paths[i] = make([]int, len(stack))
			copy(paths[i], stack)
		}
		for i := 0; i < n; i++ {
			strs := make([]string, len(paths[i]))
			for j := 0; j < len(paths[i]); j++ {
				strs[j] = strconv.Itoa(paths[i][j])
			}
			fmt.Println(strings.Join(strs, "."))
		}
	}
}
```