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

const int MAX = 8, INF = 10000000;

// üÍ
int p[MAX];

// [S[hÌÀÑû
int m[MAX] = {1, 2, 1, 2, 1, 4, 1, 4};

// [S[hðÐÆÂñ]³¹é
void rotate()
{
	int t = m[0];
	for (int i = 1; i < MAX; i++)
		m[i - 1] = m[i];
	m[7] = t;
}

// a[]Æb[]ÅCa[] < b[]©Ç¤©»è
// a[] == b[] ÌêÍÈ¢
bool comp(int a[MAX], int b[MAX])
{
	for (int i = 0; i < MAX; i++)
		if (a[0] < b[0]) return true;
		else if (a[0] > b[0]) return false;
	return false;
}

void solve()
{
	// a[]: ¦ðüêÄ¨­
	// c: a[]É¨¢ÄæêÈ¢qÌ
	int a[MAX] = {0}, c = INT_MAX;

	// MAX(=8)ÂÌÀ×ûð·
	for (int i = 0; i < MAX; i++)
	{
		// ¡ÌÀ×ûÅÌæêÈ¢qÌ
		int s = 0;
		for (int j = 0; j < MAX; j++)
		{
			s += max(p[j] - m[j], 0);
		}

		// fobO¶
		// printf("%d: ", s);
		// for (int p = 0; p < MAX; p++)
		// 	printf("%d ", m[p]);
		// printf("\n");

		// ¾çê½qÌªOæè­È¢êÍXV
		// µ¢êÍ m[] < a[] ÈçÎXV
		if (s < c || (s == c && comp(m, a)))
		{
			c = s;
			for (int k = 0; k < MAX; k++)
				a[k] = m[k];
		}

		rotate();
	}

	// oÍ
	for (int i = 0; i < MAX; i++)
		printf("%d%c", a[i], (i + 1 == MAX ? '\n' : ' '));
}

int main()
{
	while (scanf("%d", &p[0]) != EOF)
	{
		for (int i = 1; i < MAX; i++)
			scanf("%d", &p[i]);

		solve();
	}

	return 0;
}