#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<stack>
using namespace std;
int cy(int a[]){
    int ten=1,cnt=0;
    for(int i=7;i>=0;i--){
        cnt+=a[i]*ten;
        ten*=10;
    }
    return cnt;
}
int ten(int i){
    int cnt=1;
    for(int j=0;j<i;j++)cnt*=10;
    return cnt;
}
void cx(int a){
    stack<int>S;
    for(int i=8;i>0;i--){
        if(i!=8)cout<<" ";
        cout<<(a%ten(i)-a%ten(i-1))/ten(i-1);
    }
    cout<<endl;
    return;
}
int main(){
    int mery[8]={4,1,4,1,2,1,2,1},k[8],push[8];
    while(cin>>k[0]){
        for(int i=1;i<8;i++)cin>>k[i];
        vector<int>V;
        int mini=0;
        for(int i=0;i<8;i++){
            int cnt=0;
            for(int j=0;j<8;j++){
                push[j]=mery[(i+j)%8];
                if(mery[(i+j)%8]<k[j])cnt+=mery[(i+j)%8];
                else cnt+=k[j];
            }

            int x=cy(push);
            if(mini<cnt){
                V.clear();
                V.push_back(x);
                mini=cnt;
            }
            else if(mini==cnt)V.push_back(x);
        }
        sort(V.begin(),V.end());
        cx(V[0]);
    }

}