#include #include #include #include #include #include using namespace std; struct elem_t { string state; string sequence; // Constructor elem_t(string _state, string _sequence = "") { state = _state; sequence = _sequence; } }; string move(string state, int cell, int dir) { int dest = cell + (state[cell] - '0') * dir; if(dest < 0) dest = -dest; if(dest > 9) dest = 18 - dest; int m = state[cell] - '0'; state[cell] = '0'; int n = state[dest] - '0'; state[dest] = (char)((m + n) % 10 + '0'); return state; } bool dostep(elem_t e, int cell, int dir, queue &q, set &A) { e.state = move(e.state, cell, dir); e.sequence += (dir < 0 ? "L" : "R") + string(1, (char)(cell + '0')); if(e.state == "0000000000") { for(int i = 0; i < e.sequence.length(); i += 2) cout << e.sequence.substr(i, 2) << endl; return true; } if(A.insert(e.state).second) { q.push(e); } return false; } bool solve(string init) { replace(init.begin(), init.end(), '-', '0'); int n = 0; for(int i = 0; i < 10; i++) n += (init[i] - '0'); if(n % 10 != 0) return false; queue q; q.push(elem_t(init)); set A; A.insert(init); while(!q.empty()) { elem_t e = q.front(); q.pop(); for(int i = 0; i < 10; i++) { if(e.state[i] != '0') { if(i > 0 && dostep(e, i, -1, q, A)) return true; if(i < 9 && dostep(e, i, +1, q, A)) return true; } } } return false; } int main(void) { ifstream cin("zero.txt"); int n; cin >> n; for(int i = 0; i < n; i++) { string s; cin >> s; if(!solve(s)) cout << "Impossible" << endl; cout << endl; } return 0; }