← Home
 ```go
package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
)

func isPrime(n int) bool {
	if n < 2 {
		return false
	}
	if n == 2 {
		return true
	}
	if n%2 == 0 {
		return false
	}
	for i := 3; i <= int(math.Sqrt(float64(n))); i += 2 {
		if n%i == 0 {
			return false
		}
	}
	return true
}

func modPow(a, b, mod int) int {
	var res int64 = 1
	var base int64 = int64(a % mod)
	var m int64 = int64(mod)
	for b > 0 {
		if b&1 == 1 {
			res = (res * base) % m
		}
		base = (base * base) % m
		b >>= 1
	}
	return int(res)
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	var n int
	fmt.Sscanf(scanner.Text(), "%d", &n)

	valid := false
	if n == 1 || n == 4 {
		valid = true
	} else if isPrime(n) {
		valid = true
	}

	if !valid {
		fmt.Println("NO")
		return
	}

	fmt.Println("YES")

	if n == 1 {
		fmt.Println(1)
	} else if n == 4 {
		fmt.Println(1)
		fmt.Println(3)
		fmt.Println(2)
		fmt.Println(4)
	} else {
		fmt.Println(1)
		for i := 2; i <= n-1; i++ {
			inv := modPow(i-1, n-2, n)
			val := (i * inv) % n
			fmt.Println(val)
		}
		fmt.Println(n)
	}
}
```