#include <bits/stdc++.h>
using namespace std;
inline int in() {
  int x, y;
  y = scanf("%d", &x);
  return x;
}
const int N = 100 * 1000 + 5;
const long long INF = 10LL * 1000 * 1000 * 1000 * 1000;
long long a[N];
pair<long long, long long> next(long long x, long long c) {
  pair<long long, long long> res = {-1, -1};
  for (long long d = 1; d * d <= c; d++)
    if (c % d == 0 && (d + c / d) % 2 == 0) {
      long long x2 = (d + c / d) / 2;
      long long x1 = c / d - x2;
      if (x1 > x && x2 > x1 && x1 * x1 - x * x <= INF &&
          (res.second == -1 || x2 < res.second))
        res = {x1, x2};
    }
  return res;
}
int main() {
  int n = in();
  long long x = 0;
  for (int i = 0; i < n / 2; i++) {
    long long c = in();
    a[2 * i + 1] = c;
    pair<long long, long long> nx = next(x, c);
    if (nx.first == -1) return (cout << "No\n"), 0;
    a[2 * i] = nx.first * nx.first - x * x;
    x = nx.second;
  }
  cout << "Yes\n";
  for (int i = 0; i < n; i++) cout << a[i] << ' ';
  cout << endl;
  return 0;
}
