#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 6;
int n, a[maxn];
int res[maxn];
int main() {
  memset(res, 0x3f, sizeof res);
  scanf("%d", &n);
  res[0] = 0;
  n /= 2;
  int x, y, t, tpre;
  int flag = 1;
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    int flagt = 0;
    for (int j = 1; j * j <= a[i]; ++j) {
      if (a[i] % j == 0 && (((j ^ (a[i] / j)) & 1) == 0)) {
        x = j;
        y = a[i] / j;
        tpre = y - x >> 1;
        t = x + y >> 1;
        if (tpre > res[i * 2 - 2]) {
          if (t < res[i * 2]) {
            flagt = 1;
            res[i * 2] = t;
            res[i * 2 - 1] = tpre;
          }
        }
      }
    }
    if (res[i * 2 - 1] <= res[i * 2 - 2] || flagt == 0) {
      flag = 0;
    }
  }
  if (flag == 0)
    printf("No\n");
  else {
    printf("Yes\n");
    n <<= 1;
    for (int i = 1; i <= n; ++i) {
      printf("%lld ", 1ll * res[i] * res[i] - 1ll * res[i - 1] * res[i - 1]);
    }
  }
  return 0;
}
