#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <complex>
#include <ctime>
#include <cstdlib>

using namespace std;

inline int to_int(string s) {int v; istringstream sin(s); sin >> v; return v;}
template<class T> inline string to_str(T x) {ostringstream sout; sout << x; return sout.str();}

typedef long long ll;
const int INF = 1 << 30;

int pow(int a, int b)
{
	if(b == 0) return 1;
	return a*pow(a, b-1);
}

int tonum(int *n)
{
	int ret = 0;
	for(int i = 1; i <= 8; i++)
	{
		ret += n[i] * pow(10, i);
	}
	return ret;
}

int main()
{
	int F[8][8], T[8];
	int L[] = {1, 4, 1, 4, 1, 2, 1, 2};
	
	for(int i = 0; i < 8; i++)
	{
		F[0][i] = L[i];
	}

	for(int i = 1; i < 8; i++)
	{
		for(int j = 0, k = i; j < 8; j++, k++)
		{
			if(k > 7)
			{
				k = 0;
			}
			F[i][k] = F[0][j];
		}
	}
	
	while(cin >> T[0])
	{
		int res, sum = INF;
		for(int i = 1; i < 8; i++)
		{
			cin >> T[i];
		}

		for(int i = 0; i < 8; i++)
		{
			int s = 0;
			for(int j = 0; j < 8; j++)
			{
				if(T[j] - F[i][j] > 0)
				{
					s += T[j] - F[i][j];
				}
			}
			if( sum > s || s == sum && tonum(F[res]) > tonum(F[i]))
			{
				res = i;
				sum = s;
			}
		}

		for(int i = 0; i < 8; i++)
		{
			printf("%d%s",F[res][i] ,(i!=7)?" ":"\n");
		}
	}
}