func_code_string: #include <bits/stdc++.h>   using namespace std;   long long x[100002];   vector<int> P[2 * 100002];   void NoSol() {     printf( No n );     exit(0);   }   long long sqr(int x) { return 1LL * x * x; }   int bs(int x, long long val) {     int i = -1, sz = P[x].size(), p = 1;     while (p < sz) p <<= 1;     while (p) {       if (i + p < sz && sqr(P[x][i + p]) <= val) i += p;       p >>= 1;     }     return i + 1;   }   int main() {     int n;     long long Xmax = 0;     scanf( %d , &n);     for (int i = 0; i < n / 2; ++i) {       scanf( %lld , &x[i * 2 + 1]);       Xmax = max(Xmax, x[i * 2 + 1]);       if (x[i * 2 + 1] % 4 == 2) NoSol();     }     long long s = 0;     for (int a = 1; a < Xmax; ++a)       for (int b = a + 1; sqr(b) - sqr(a) <= Xmax; ++b)         P[sqr(b) - sqr(a)].push_back(a);     long long sum = 0;     for (int i = 0; i < n / 2; ++i) {       long long X = x[i * 2 + 1];       if (P[X].empty()) NoSol();       if (sqr(P[X].back()) <= sum) NoSol();       x[i * 2] = sqr(P[X][bs(X, sum)]) - sum;       sum = sum + x[i * 2] + X;     }     printf( Yes n );     s = 0;     for (int i = 0; i < n; ++i) {       printf( %lld  , x[i]);       s += x[i];       long long r = sqrt(s);       if (r * r != s)         while (1)           ;     }     return 0;   }   