#include <bits/stdc++.h>
using namespace std;
signed main() {
  long long n;
  cin >> n;
  n /= 2;
  vector<long long> x(n);
  for (long long i = 0; i < n; ++i) {
    cin >> x[i];
  }
  vector<vector<pair<long long, long long>>> as(n);
  for (long long i = 0; i < n; ++i) {
    for (long long a = 1; a * a < x[i]; ++a) {
      if (x[i] % a) {
        continue;
      }
      long long b = x[i] / a;
      if ((b + a) % 2) {
        continue;
      }
      as[i].emplace_back((b - a) / 2, (b + a) / 2);
    }
    reverse(as[i].begin(), as[i].end());
  }
  vector<long long> y(n);
  long long last = 0;
  for (long long i = 0; i < n; ++i) {
    pair<long long, long long> tf = {last, 0};
    long long j = lower_bound(as[i].begin(), as[i].end(), tf) - as[i].begin();
    if (j >= as[i].size()) {
      cout << "No";
      return 0;
    }
    tf = as[i][j];
    y[i] = tf.first * tf.first - last * last;
    last = tf.second;
  }
  for (long long i = 0; i < n; ++i) {
    if (y[i] < 1) {
      cout << "No";
      return 0;
    }
  }
  cout << "Yes" << '\n';
  for (long long i = 0; i < n; ++i) {
    cout << y[i] << ' ' << x[i] << ' ';
  }
  return 0;
}
