#include <bits/stdc++.h>
using namespace std;
vector<long long> powers;
set<long long> powerSet;
vector<long long> sol;
int v[1000000];
long long X = 1000000;
int main(void) {
  std::ios_base::sync_with_stdio(false);
  int n;
  cin >> n;
  for (int i = 0; i < n / 2; i++) {
    cin >> v[i];
  }
  for (long long i = 0; i < 1000000; i++) {
    powers.push_back(i * i);
    powerSet.insert(i * i);
  }
  int currentSumI = 0;
  for (int i = 0; i < n / 2; i++) {
    int nextSumI = currentSumI + 1;
    while (true) {
      if (nextSumI == powers.size()) {
        cout << "No\n";
        return 0;
      }
      long long nextSum = powers[nextSumI];
      if (powerSet.find(nextSum + v[i]) != powerSet.end()) break;
      nextSumI++;
    }
    if (powers[nextSumI] - powers[currentSumI] > 1e13) {
      cout << "No\n";
      return 0;
    }
    sol.push_back(powers[nextSumI] - powers[currentSumI]);
    sol.push_back(v[i]);
    while (true) {
      currentSumI++;
      long long currentSum = powers[currentSumI];
      if (currentSum == powers[nextSumI] + v[i]) break;
    }
  }
  cout << "Yes\n";
  for (int i = 0; i < n; i++) cout << sol[i] << " ";
}
