#include "bits/stdc++.h"

using namespace std;

#define REP(i,n) for(int i=0;i<(n);i++)
#define ALL(x) x.begin(),x.end()
const bool DEBUG = false;


/*-------- begin cut here --------*/
int tmp[6];
const char pos[6] = { 'B','T','U','D','L','R' };
struct Dice {
	int val[6]; //B,T,U,D,L,R
	int id[6]; //ラベル A0,A1,C1,C0,B1,B0がどの方向にあるか
	int rev[6];//位置iについてるラベルが何か
	char cmd;

    //6面全部0で初期化
	Dice() {
		REP(i, 6) {
			val[i] = 0;
			id[i] = i;
			rev[i] = i;
		}
	}
	void east() {//542301
		val[5]++;
		REP(i, 6)tmp[i] = val[i];
		val[0] = tmp[5];
		val[1] = tmp[4];
		val[2] = tmp[2];
		val[3] = tmp[3];
		val[4] = tmp[0];
		val[5] = tmp[1];
		REP(i, 6) {
			tmp[i] = id[i];
		}
		id[rev[0]] = tmp[rev[4]];
		id[rev[1]] = tmp[rev[5]];
		id[rev[2]] = tmp[rev[2]];
		id[rev[3]] = tmp[rev[3]];
		id[rev[4]] = tmp[rev[1]];
		id[rev[5]] = tmp[rev[0]];

		REP(i, 6)rev[id[i]] = i;
	}
	void west() {//452310
		val[4]++;
		REP(i, 6)tmp[i] = val[i];
		val[0] = tmp[4];
		val[1] = tmp[5];
		val[2] = tmp[2];
		val[3] = tmp[3];
		val[4] = tmp[1];
		val[5] = tmp[0];
		REP(i, 6) {
			tmp[i] = id[i];
		}
		id[rev[0]] = tmp[rev[5]];
		id[rev[1]] = tmp[rev[4]];
		id[rev[2]] = tmp[rev[2]];
		id[rev[3]] = tmp[rev[3]];
		id[rev[4]] = tmp[rev[0]];
		id[rev[5]] = tmp[rev[1]];
		REP(i, 6)rev[id[i]] = i;
	}
	void north() {//231045
		val[2]++;
		REP(i, 6)tmp[i] = val[i];
		val[0] = tmp[2];
		val[1] = tmp[3];
		val[2] = tmp[1];
		val[3] = tmp[0];
		val[4] = tmp[4];
		val[5] = tmp[5];
		REP(i, 6) {
			tmp[i] = id[i];
		}
		id[rev[0]] = tmp[rev[3]];
		id[rev[1]] = tmp[rev[2]];
		id[rev[2]] = tmp[rev[0]];
		id[rev[3]] = tmp[rev[1]];
		id[rev[4]] = tmp[rev[4]];
		id[rev[5]] = tmp[rev[5]];
		REP(i, 6)rev[id[i]] = i;
	}
	void south() {//320145
		val[3]++;
		REP(i, 6)tmp[i] = val[i];
		val[0] = tmp[3];
		val[1] = tmp[2];
		val[2] = tmp[0];
		val[3] = tmp[1];
		val[4] = tmp[4];
		val[5] = tmp[5];
		REP(i, 6) {
			tmp[i] = id[i];
		}
		id[rev[0]] = tmp[rev[2]];
		id[rev[1]] = tmp[rev[3]];
		id[rev[2]] = tmp[rev[1]];
		id[rev[3]] = tmp[rev[0]];
		id[rev[4]] = tmp[rev[4]];
		id[rev[5]] = tmp[rev[5]];
		REP(i, 6)rev[id[i]] = i;
	}
	void print() {
		cout << "position:";
		REP(i, 6) {
			cout << pos[id[i]] << " ";
		}cout << endl;
		cout << "value:";
		REP(i, 6) {
			cout << val[id[i]] << " ";
		}cout << endl;
	}
};

/*-------- end cut here --------*/

/*
	verified on 2020/04/01
    
*/

int t[6];
int p, q;
string ans = "Z";

bool isGoal(const Dice &dice) {
	bool same = true;
	REP(i, 6) {
		if (t[i] != dice.val[dice.id[i]])same = false;
	}
	return same;
}


int dif[6];
bool isPossible(const Dice &dice) {
	int sum = 0;
	//既に目標を越えていたらアウト
	REP(i, 6) {
		dif[i] = t[dice.rev[i]] - dice.val[i];
		sum += dif[i];
		if (dif[i] < 0)return false;
	}
	//対面の和が側面の和+1を越えたらアウト
	if (2 * (dif[0] + dif[1])>sum)return false;
	if (2 * (dif[2] + dif[3])>sum + 1)return false;
	if (2 * (dif[4] + dif[5])>sum + 1)return false;
	return true;
}
long long cnt_nodes = 0;


void calc(Dice dice) {
	string res = "";
	cnt_nodes++;
	while (!isGoal(dice)) {
		if (!isPossible(dice))return;
		Dice d1 = dice;
		d1.east();
		d1.cmd = 'E';
		if (DEBUG) {
			cout << "EAST" << endl;
			dice.print();
			cout << "↓" << endl;
			d1.print();
		}
		if (isPossible(d1)) {
			res += d1.cmd;
			dice = d1; continue;
		}

		Dice d2 = dice;
		d2.north();
		d2.cmd = 'N';
		if (DEBUG) {
			cout << "NORTH" << endl;
			dice.print();
			cout << "↓" << endl;
			d2.print();
		}
		if (isPossible(d2)) {
			res += d2.cmd;
			dice = d2; continue;
		}

		Dice d3 = dice;
		d3.south();
		d3.cmd = 'S';
		if (DEBUG) {
			cout << "SOUTH" << endl;
			dice.print();
			cout << "↓" << endl;
			d3.print();
		}
		if (isPossible(d3)) {
			res += d3.cmd;
			dice = d3; continue;
		}

		Dice d4 = dice;
		d4.west();
		d4.cmd = 'W';
		if (DEBUG) {
			cout << "WEST" << endl;
			dice.print();
			cout << "↓" << endl;
			d4.print();
		}
		if (isPossible(d4)) {
			res += d4.cmd;
			dice = d4; continue;
		}
	}
	if (isGoal(dice)) {
		//reverse(ALL(res));
		if (ans > res)ans = res;
	}

}

void solve() {
	REP(i, 6)cin >> t[i];
	int sum = 0;
	REP(i, 6)sum += t[i];
	if (sum == 0)exit(0);
	ans = "Z";
	cin >> p >> q;
	cnt_nodes = 0;

	do {
		Dice dice;
		calc(dice);
	} while (next_permutation(t, t + 6));

	if (ans == "Z")cout << "impossible" << endl;

	else {
		cout << ans.substr(p - 1, q - p + 1) << endl;
	}
}

signed main() {
	while (true)solve();
}


Measured memory_bytes: 3284