#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
int n, a[4];
vector<int> ans;
void remove(vector<int>& xs, int x) {
  auto it = find(xs.begin(), xs.end(), x);
  if (it != xs.end()) {
    if (xs.size() > 1) *it = xs.back();
    xs.pop_back();
  }
}
bool good(int* first, int* last, int x1) {
  vector<int> x(first, last);
  int x4 = 3 * x1;
  remove(x, x4);
  if (x.size() > 2) return false;
  if (x.size() == 2)
    ans = {x1, x[0], x[1], x4};
  else if (x.size() == 1)
    ans = {x1, x[0], 4 * x1 - x[0], x4};
  else
    ans = {x1, 2 * x1, 2 * x1, x4};
  sort(ans.begin(), ans.end());
  if (3 * ans[0] == ans[3] && ans[1] + ans[2] == 4 * ans[0]) return true;
  return false;
}
bool run() {
  if (n == 0) {
    ans = {1, 2, 2, 3};
    return true;
  }
  if (good(a + 1, a + n, a[0])) return true;
  for (int i = 1; i < a[0]; i++) {
    if (good(a, a + n, i)) return true;
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout << fixed;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  sort(a, a + n);
  if (run()) {
    cout << "YES" << endl;
    for (int i = 0, j = 0; i < (int)ans.size(); i++) {
      while (j < n && a[j] < ans[i]) j++;
      if (a[j] == ans[i])
        j++;
      else
        cout << ans[i] << endl;
    }
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
