#include <bits/stdc++.h>   #pragma GCC optimize( O3 )   using namespace std;   template <class c>   struct rge {     c b, e;   };   template <class c>   rge<c> range(c h, c n) {     return {h, n};   }   template <class c>   auto dud(c* r) -> decltype(cerr << *r);   template <class c>   char dud(...);   struct muu {     template <class c>     muu& operator<<(const c&) {       return *this;     }     muu& operator()() { return *this; }   };   const int N = 1e5 + 7;   long long tab[N];   int n;   long long inf = 1e18;   void fail() {     printf( No n );     exit(0);   }   int main() {     scanf( %d , &n);     for (int i = 2; i <= n; i += 2) scanf( %lld , tab + i);     long long sum = 0;     for (int i = 2; i <= n; i += 2) {       long long nsum = inf;       for (int d = 1; d * d <= tab[i]; ++d) {         if (tab[i] % d == 0) {           long long a = (tab[i] / d) - d;           long long b = (tab[i] / d) + d;           if (a % 2 == 0 && b % 2 == 0) {             if (a * a > 4 * sum) {               nsum = min(nsum, (b * b) / 4);             }           }         }       }       (muu() << __FUNCTION__ <<  #  << 67 <<  :  ) << i <<     << nsum;       if (nsum == inf) fail();       tab[i - 1] = nsum - sum - tab[i];       sum = nsum;     }     printf( Yes n );     for (int i = 1; i <= n; ++i) printf( %lld  , tab[i]);     printf(  n );     return 0;   }   