#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#include <queue>
 
using namespace std;
 
#define pb(n)	push_back(n)
#define mp(n,m) make_pair(n,m)
#define fi 	first
#define se 	second
#define all(r) (r).begin(),(r).end()

#define rep(i,n) for(int i=0; i<(n); i++)
#define repc(i,a,b) for(int i=(a); i<(b); i++)

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
 
const int IMAX=((1<<30)-1)*2+1;
const double EPS=1e-10;
//int mod=1000000007

vi c;
int s,n;
int sum=0;


int main(){
	vi p(8);
	while(1){
		rep(i,8)cin>>p[i];
		if(cin.eof())break;
		// rep(i,8){
		// 	if(i!=0)cout<<" ";
		// 	cout<<p[i];
		// }
		vi v(8,1);
		v[1]=v[3]=2;
		v[5]=v[7]=4;
		s=n=IMAX;
		rep(i,8){
			sum=0;
			vi u;
			rep(j,8){
				sum+=max(p[j]-v[j],0);
				u.pb(v[(j+1)%8]);
			}
			//cout<<sum<<endl;
			if(sum<s){
				s=sum;
				c=v;
			}
			if(sum==s&&v<c){
				c=v;
			}
			v=u;
			// rep(i,8){
			// 	if(i!=0)cout<<" ";
			// 	cout<<v[i];
			// }
			// cout<<endl;
		}
		rep(i,8){
			if(i!=0)cout<<" ";
			cout<<c[i];
		}
		cout<<endl;
	}
}