#include <cstdio>
#include <algorithm>
#include <climits>
using namespace std;

int d[8]={1,2,1,2,1,4,1,4};
void revolution(int *p,int k){
	for(int i=0;i<8;i++){
		p[i]=d[(i+k)%8];
	}
}
int main(int argc,char *argv[]){
	int p[8],res,t,td[8];
	unsigned long long int m, tt;
	while(scanf("%d%d%d%d%d%d%d%d",&p[0],&p[1],&p[2],&p[3],&p[4],&p[5],&p[6],&p[7])!=EOF){
		res=INT_MAX;m=59999*100000;
		for(int i=0;i<8;i++){
			revolution(td,i);
			t=0;tt=0;
			for(int j=0;j<8;j++) {t+=max(p[j]-td[j],0);tt=tt*10+td[j];}
			if(res>t) {res=t;m=tt;}
			if(res==t&&tt<m) {res=t;m=tt;}
		}
		for(int i=0;i<8;i++){
			p[7-i]=m%10;m/=10;
		}
		printf("%d %d %d %d %d %d %d %d\n",p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7]);
	}

	return 0;
}