#include <bits/stdc++.h>
using namespace std;
const long long INF = 1000000000;
vector<long long> h[200005];
long long a[200005], b[200005], n;
long long solve(long long x, long long y) {
  long long mn = INF;
  for (int i = 0; i < h[y].size(); i++) {
    long long s = h[y][i], t = y / s;
    long long u = (t - s) / 2, v = (t + s) / 2;
    if (u > x) mn = min(mn, u);
  }
  if (mn == INF) return -1;
  return mn;
}
int main() {
  for (int i = 1; i < 200005; i++)
    for (int j = i; (long long)j * i < 200005; j++)
      if ((i + j) % 2 == 0) {
        h[i * j].push_back(i);
      }
  cin >> n;
  for (int i = 2; i <= n; i += 2) cin >> a[i];
  for (int i = 2; i <= n; i += 2) {
    long long w = solve(b[i - 2], a[i]);
    if (w == -1) {
      puts("No");
      return 0;
    }
    b[i - 1] = w;
    b[i] = (long long)sqrt((double)w * w + a[i] + 0.5);
  }
  puts("Yes");
  for (int i = 1; i <= n; i++) cout << b[i] * b[i] - b[i - 1] * b[i - 1] << ' ';
  cout << endl;
}
