← Home
package main

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

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
	}

	a := make([]int, n)
	minA := 501
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &a[i])
		if a[i] < minA {
			minA = a[i]
		}
	}

	if n == 0 {
		fmt.Fprintln(out, "YES")
		fmt.Fprintln(out, 1)
		fmt.Fprintln(out, 1)
		fmt.Fprintln(out, 3)
		fmt.Fprintln(out, 3)
		return
	}

	for base := 1; base <= minA; base++ {
		for b := base; b <= 2*base; b++ {
			cand := [4]int{base, b, 4*base - b, 3 * base}
			used := [4]bool{}
			ok := true

			for _, v := range a {
				found := false
				for i := 0; i < 4; i++ {
					if !used[i] && cand[i] == v {
						used[i] = true
						found = true
						break
					}
				}
				if !found {
					ok = false
					break
				}
			}

			if ok {
				fmt.Fprintln(out, "YES")
				for i := 0; i < 4; i++ {
					if !used[i] {
						fmt.Fprintln(out, cand[i])
					}
				}
				return
			}
		}
	}

	fmt.Fprintln(out, "NO")
}