#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
vector<long long> E[maxn], ans;
void init() {
  for (int i = 1; i < maxn; i++) {
    for (int j = i; j < maxn; j += i) E[j].push_back(1ll * i);
  }
}
int main() {
  init();
  int n;
  cin >> n;
  long long now = 0, flag = 0;
  for (int i = 0; i < n / 2; i++) {
    long long x;
    cin >> x;
    if (flag) continue;
    long long cnt = maxn;
    for (int j = 0; j < E[x].size(); j++) {
      long long tmp = x / E[x][j];
      if (tmp % 2 != E[x][j] % 2) continue;
      long long mid = (tmp + E[x][j]) / 2, d = abs(tmp - E[x][j]) / 2;
      if (d <= now) continue;
      cnt = min(cnt, mid);
    }
    if (cnt == maxn)
      flag = 1;
    else {
      ans.push_back(cnt * cnt - x - now * now);
      ans.push_back(x);
      now = cnt;
    }
  }
  if (flag)
    cout << "No\n";
  else {
    cout << "Yes\n";
    for (int i = 0; i < n; i++)
      printf("%lld%c", ans[i], i == n - 1 ? '\n' : ' ');
  }
  return 0;
}
