#include <stdio.h>
#include <stdlib.h>
/*
long long int memo[51][51]={};
long long int fascal(int x,int y)
{
if(memo[x][y]!=0) return memo[x][y];
if(y==1 || y==x) return memo[x][y]=1;
return memo[x][y]=(fascal(x-1,y)+fascal(x-1,y-1));
}
int main()
{
int x;
scanf("%d", &x);
for(int i=1;i<=x;i++)
{
for(int j=1;j<=i;j++)
{
printf("%lld ", fascal(i,j));
}
printf("\n");
}
return 0;
}
*/
/*
int a[100000]={};
int memo[10000]={};
int n;
int max(int a,int b)
{
return a>b ? a : b;
}
int maximum()
{
int m;
memo[0]=a[0];
for(int i=1;i<n;i++)
{
if(memo[i-1]>0)
{
memo[i]=memo[i-1]+a[i];
}
else
{
memo[i]=a[i];
}
// memo[i]=max(a[i],memo[i-1]+a[i]);
}
m=memo[0];
for(int i=0;i<n;i++)
{
if(m<memo[i]) m=memo[i];
}
return m;
}
int main()
{
int i;
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d", &a[i]);
}
printf("%d", maximum());
printf("\n");
for(i=0;i<n;i++)
{
printf("%d ",memo[i]);
}
}
*/
double a[10000]={};
double memo[10000]={};
int n;
double maximum()
{
double m;
memo[0]=a[0];
for(int i=1;i<n;i++)
{
if(memo[i-1]>1)
{
memo[i]=memo[i-1]*a[i];
}
else
{
memo[i]=a[i];
}
}
m=memo[0];
for(int i=1;i<n;i++)
{
if(m<memo[i]) m=memo[i];
}
return m;
}
int main()
{
scanf("%d", &n);
for(int i=0;i<n;i++)
{
scanf("%lf", &a[i]);
}
printf("%lf", maximum());
printf("\n");
for(int i=0;i<n;i++)
{
printf("%lf ",memo[i]);
}
}