#include <bits/stdc++.h>
using namespace std;
void cout_v(vector<long long>& a) {
  long long n = a.size();
  for (long long i = 0; i < n; i++) {
    cout << a[i] << "\n";
  }
}
void cin_v(vector<long long>& a) {
  long long n = a.size();
  for (long long i = 0; i < n; i++) {
    cin >> a[i];
  }
}
bool islucky(long long num) {
  while (num > 0) {
    long long dig = num % 10;
    if (dig == 8) {
      return true;
    }
    num = num / 10;
  }
  return false;
}
bool check(vector<long long>& a) {
  return (a[0] + a[3] == a[2] + a[1] && a[0] * 3 == a[3]);
}
int main() {
  long long n;
  cin >> n;
  vector<long long> a(n);
  cin_v(a);
  sort(a.begin(), a.end());
  if (n == 0) {
    cout << "YES\n";
    a.push_back(1);
    a.push_back(1);
    a.push_back(3);
    a.push_back(3);
    cout_v(a);
    return 0;
  }
  if (n == 1) {
    cout << "YES\n";
    a.clear();
    a.push_back(a[0]);
    a.push_back(3 * a[0]);
    a.push_back(3 * a[0]);
    cout_v(a);
    return 0;
  }
  if (n == 2) {
    vector<long long> arr(4);
    long long limit = 4 * a[1];
    for (long long i = 1; i <= limit; i++) {
      for (long long j = 1; j <= limit; j++) {
        arr[0] = (i);
        arr[1] = (j);
        arr[2] = (a[0]);
        arr[3] = (a[1]);
        sort(arr.begin(), arr.end());
        if (check(arr)) {
          cout << "YES\n" << i << endl << j << endl;
          return 0;
        }
      }
    }
    cout << "NO\n";
    return 0;
  }
  if (n == 3) {
    for (long long i = 1; i <= 3000; i++) {
      vector<long long> arr;
      arr.push_back(i);
      arr.push_back(a[2]);
      arr.push_back(a[0]);
      arr.push_back(a[1]);
      sort(arr.begin(), arr.end());
      if (check(arr)) {
        cout << "YES\n" << i << endl;
        return 0;
      }
    }
    cout << "NO\n";
    return 0;
  } else {
    if (check(a)) {
      cout << "YES\n";
    } else {
      cout << "NO\n";
    }
  }
  return 0;
}
