//interactive char sy[20][20]; char sx[20][20]; ll ey[20][20],ey0[20][20]; ll ex[20][20],ex0[20][20]; ll d[20][20]; ll cost_c=100000; ll cost_i=800; ll cost_w=1600000; { rd_ll(); // H rd_ll(); // W rd_ll(); // p rep(y,20){ rep(x,20){ ey[y][x]=(ey0[y][x]=cost_c+abs(y*2+1-x*2))+cost_i; ex[y][x]=(ex0[y][x]=cost_c+abs(y*2-x*2-1))+cost_i; } } DijkstraHeap h; h.walloc(400); while(true){ { h.init(400); h.change(19*20+19,-0); while(h.size){ ll k=h.pop(); ll v=h.val[k]; ll y=k/20; ll x=k%20; d[y][x]=v; v&=~3l; if(y!= 0) h.change(k-20,v+ey[y-1][x]*4+0); if(y!=19) h.change(k+20,v+ey[y-0][x]*4+1); if(x!= 0) h.change(k- 1,v+ex[y][x-1]*4+2); if(x!=19) h.change(k+ 1,v+ex[y][x-0]*4+3); } } char p[401]; { ll l=0; ll x=0; ll y=0; while(!(y==19&&x==19)){ ll c=d[y][x]&3; p[l++]="DURL"[c]; y+=(c==0)-(c==1); x+=(c==2)-(c==3); } p[l]=0; wt(p); } { ll@r; if(r<0) exit(0); ll x=0; ll y=0; rep(i,r){ ll c=p[i]; if(c=='U') if(!sy[--y][x]) sy[y-0][x]=1,ey[y-0][x]=ey0[y-0][x]; if(c=='D') if(!sy[y++][x]) sy[y-1][x]=1,ey[y-1][x]=ey0[y-1][x]; if(c=='L') if(!sx[y][--x]) sx[y][x-0]=1,ex[y][x-0]=ex0[y][x-0]; if(c=='R') if(!sx[y][x++]) sx[y][x-1]=1,ex[y][x-1]=ex0[y][x-1]; } { ll c=p[r]; if(c=='U') if(!sy[--y][x]) ey[y-0][x]+=cost_w; if(c=='D') if(!sy[y++][x]) ey[y-1][x]+=cost_w; if(c=='L') if(!sx[y][--x]) ex[y][x-0]+=cost_w; if(c=='R') if(!sx[y][x++]) ex[y][x-1]+=cost_w; } } } }