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")
}