#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
ostream &operator<<(ostream &os, pair<T1, T2> const &v) {
  return os << '(' << v.first << ", " << v.second << ')';
}
int n;
long long a[200003];
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; i += 2) scanf("%I64d", &a[i]);
  int x = 1;
  long long sum = 0;
  for (int i = 1; i <= n; i += 2) {
    for (; (long long)x * x <= (long long)(1e13); ++x) {
      long long sqr = (long long)x * x;
      if (sum + a[i + 1] < sqr) {
        long long val = sqr - sum - a[i + 1];
        long long cur = sum + val;
        long long tmp = sqrt(cur);
        if (tmp * tmp == cur) {
          a[i] = val;
          sum = cur + a[i + 1];
          break;
        }
      }
    }
  }
  if ((long long)x * x > (long long)(1e13))
    puts("No");
  else {
    puts("Yes");
    for (int i = 1; i <= n; ++i) printf("%I64d ", a[i]);
  }
  return 0;
}
