#include <bits/stdc++.h>
using namespace std;
const long long NR = 1e5 + 10;
void Min(long long& x, long long y) { x = min(x, y); }
void Max(long long& x, long long y) { x = max(x, y); }
long long n;
long long a[NR];
void fj(long long sum, long long x, long long& p) {
  p = -1;
  long long tt = sqrt(x);
  for (long long i = tt; i >= 1; i--) {
    if (x % i || (x / i + i) % 2) continue;
    long long a = (x / i + i) / 2, b = (x / i - i) / 2;
    if (b * b > sum) {
      p = b * b - sum;
      return;
    }
  }
}
long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch <= '9' && ch >= '0') {
    x = (x << 3) + (x << 1) + (ch ^ 48);
    ch = getchar();
  }
  return x * f;
}
signed main() {
  n = read();
  for (long long i = 1; i <= n / 2; i++) a[i * 2] = read();
  long long sum = 0;
  for (long long i = 1; i <= n; i += 2) {
    long long l;
    fj(sum, a[i + 1], l);
    if (l == -1) {
      puts("No");
      return 0;
    }
    sum += l + a[i + 1];
    a[i] = l;
  }
  puts("Yes");
  for (long long i = 1; i <= n; i++) printf("%lld ", a[i]);
  return 0;
}
