#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;

}