← Home
package main

import (
	"bufio"
	"os"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	a := make([]int, n)
	for i := 0; i < n; i++ {
		scanner.Scan()
		a[i], _ = strconv.Atoi(scanner.Text())
	}

	writer.WriteString("YES\n")
	for i := 1; i <= n; i++ {
		s := strconv.Itoa(i)
		writer.WriteString(s + " " + s + "\n")
	}

	for i := 0; i < n; i++ {
		d := a[i] / 2
		target := (i + 1) + d
		if target > n {
			target = (i + 1) - d
		}
		if i > 0 {
			writer.WriteByte(' ')
		}
		writer.WriteString(strconv.Itoa(target))
	}
	writer.WriteByte('\n')
}