#include #include #include #include #include using namespace std; #define bref(b,n) (((b)>>((n)*4))&0xFll) #define bset(b,n,d) (((b)&(~(0xfll<<((n)*4))))|((long long)(d)<<((n)*4))) int main() { ifstream cin("zero.txt"); int cases;cin>>cases; while(cases--){ long long init=0; int sum=0; for (int i=0;i<10;i++){ char c;cin>>c; int n; if (c=='-') n=0; else n=c-'0'; init=init*16+n; sum+=n; } set bd,updt; map > root; if (sum%10!=0){ cout<<"Impossible"< cpy=updt; // 高コストか? updt.clear(); for (set::iterator p=cpy.begin(); p!=cpy.end();p++){ long long b=*p; // bの子盤面を生成してセットに突っ込む //cout<<"***"< r; while(root[cur].first>=0){ r.push_back(root[cur].second); cur=root[cur].first; } for (int i=r.size()-1;i>=0;i--) cout<<((r[i]&1)?"L":"R")<<(char)('a'+(9-(r[i]/2)))<=10) pos=18-pos; long long u=b; u=bset(u,i,0); u=bset(u,pos,(bn+bref(u,pos))%10); //cout<=10) pos=18-pos; long long u=b; u=bset(u,i,0); u=bset(u,pos,(bn+bref(u,pos))%10); if (bd.find(u)==bd.end()){ // 初見 updt.insert(u); bd.insert(u); root[u]=make_pair(b,i*2+1); } } } } } cout<<"Impossible"<