#include <bits/stdc++.h>
using namespace std;
int N;
signed long long A[202020];
vector<signed long long> M;
void solve() {
  int i, j, k, l, r, x, y;
  string s;
  for (i = 0; i < (6000001); i++) M.push_back(1LL * i * i);
  cin >> N;
  signed long long cur = 0;
  for (i = 0; i < (N / 2); i++) {
    cin >> A[i * 2 + 1];
    signed long long nex = cur + 1, R = nex;
    while (nex <= 6000000) {
      while (R < 5100000 && M[R] < nex * nex + A[i * 2 + 1]) R++;
      if (R > 5010000) return (void)printf("No\n");
      if (M[R] == nex * nex + A[i * 2 + 1]) break;
      nex++;
    }
    if (nex > 6000000) return (void)printf("No\n");
    A[i * 2] = nex * nex - cur * cur;
    if (A[i * 2] > 10000000000000LL) return (void)printf("No\n");
    cur = R;
  }
  cout << "Yes" << endl;
  for (i = 0; i < (N); i++) cout << A[i] << " ";
}
int main(int argc, char** argv) {
  string s;
  int i;
  if (argc == 1) ios::sync_with_stdio(false), cin.tie(0);
  for (i = 0; i < (argc - 1); i++) s += argv[i + 1], s += '\n';
  for (i = 0; i < (s.size()); i++) ungetc(s[s.size() - 1 - i], stdin);
  cout.tie(0);
  solve();
  return 0;
}
