#include
<iostream>
#include
<string>
#include
<vector>
#include
<functional>
#include
<algorithm>
#include
<numeric>
#include
<map>
using
namespace std;
#define
FOR(i,n) for (int i=0;i<(int)n;i++)
#define
FORN(i,a,b) for (int i=a;i<=(int)b;i++)
bool
f(vector<int> &v, int casenum)
{
vector<int> res(v.size()+1);
int max=0;
int recordA=0;
bool globalFound=false;
FORN(a,1,v[0])
{
bool found=true;
res[0]=a;
FORN(i,1,res.size()-1)
{
res[i]=v[i-1]-res[i-1];
if (res[i]<1) found=false;
}
if (found) //now find max product
{
int tmax=(int)accumulate (res.begin(),
res.end(), 1, multiplies<int>());
if (tmax>max)
{
max=tmax;
recordA=a;
globalFound=true;
}
}
}
if (!globalFound)
{
cout<<"Case "<<casenum<<": Impossible Sums!\n";
return false;
}
//get the winning sequencez
res[0]=recordA;
FORN(i,1,res.size()-1) res[i]=v[i-1]-res[i-1];
cout<<"Case "<<casenum<<": ";
cout<<res[0];
FORN(i,1,res.size()-1) cout<<" "<<res[i];cout<<endl;
return true;
}
int
main()
{
int n;
int casenum=1;
while(cin>>n && n!=0)
{
vector<int> v(n);
FOR(i,n) cin>>v[i];
f(v,casenum++);
}
return 0;
}