#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[1000005],b[1000005],ans=0,ans2=0;
bool pf(int num) {
int w=sqrt(num);
if(w*w==num)return 1;
else return 0;
}
int find(int x,int y) {
if(x==y){
if(pf(x))return 0;
else {
int w=sqrt(x)+1;
return w*w-x;
}
}
if(x<y)swap(x,y);
int w=x-y,xx,yy;
bool pd=0;
for(int i=1; i*i<=w; i++) {
if(w%i!=0)continue;
int a=i,b=w/i;
if((a+b)%2==0) {
xx=(a+b)/2;
if(xx*xx<x)continue;
yy=b-xx;
pd=1;
break;
}
}
if(pd)return xx*xx-x;
else return -1;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i],b[i]=a[i];
}
for(int i=1; i<n-1; i++) {
if(!pf(a[i]+a[i+1])) {
int w=find(a[i],a[i+2]);
if(w!=-1) {
a[i+1]=w,i++;
ans++;
} else {
if(pf(a[i]))a[i+1]=0;
else {
int w=sqrt(a[i])+1;
a[i+1]=w*w-a[i];
}
ans++;
}
}
}
if(!pf(a[n-1]+a[n])) {
if(pf(a[n-1]))a[n]=0;
else {
int w=sqrt(a[n-1])+1;
a[n]=w*w-a[n-1];
}
ans++;
}
for(int i=n; i>2; i--) {
if(!pf(b[i]+b[i-1])) {
int w=find(b[i],b[i-2]);
if(w!=-1) {
b[i-1]=w,i--;
ans2++;
} else {
if(pf(b[i]))b[i-1]=0;
else {
int w=sqrt(b[i])+1;
b[i-1]=w*w-b[i];
}
ans2++;
}
}
}
if(!pf(b[2]+b[1])) {
if(pf(b[2]))b[1]=0;
else {
int w=sqrt(b[2])+1;
b[1]=w*w-b[2];
}
ans2++;
}
if(ans<ans2) {
cout<<ans<<endl;
for(int i=1; i<=n; i++) {
cout<<a[i]<<" ";
}
} else {
cout<<ans2<<endl;
for(int i=1; i<=n; i++) {
cout<<b[i]<<" ";
}
}
return 0;
}
玄关。。。