N,M=map(int,input().split()) A=[] for i in range(N): A.append(list(input())) bomb=[] maxi=0 num=0 for i in range(M): C,L=map(int,input().split()) bomb.append([C,[]]) if maxiabs(posx-i)+abs(posy-j): near=abs(posx-i)+abs(posy-j) x=i y=j for i in range(x-posx): ans.append([1,"D"]) for i in range(y-posy): ans.append([1,"R"]) for i in range(posx-x): ans.append([1,"U"]) for i in range(posy-y): ans.append([1,"L"]) while True: maxi=0 xp=-1 yp=-1 for i in range(up,dn): for j in range(lf,ri): cnt=0 for k,l in bomb[num][1]: if up<=i+kmaxi: maxi=cnt xp=i yp=j if xp==-1: break use.append((xp,yp)) for k,l in bomb[num][1]: if 0<=xp+kabs(x-use[j][0])+abs(y-use[j][1]): near=abs(x-use[j][0])+abs(y-use[j][1]) go=j for i in range(use[go][0]-x): ans.append([1,"D"]) for i in range(x-use[go][0]): ans.append([1,"U"]) for i in range(use[go][1]-y): ans.append([1,"R"]) for i in range(y-use[go][1]): ans.append([1,"L"]) x=use[go][0] y=use[go][1] ans.append([3,num+1]) used.add(go) posx=x posy=y print(len(ans)) for i in ans: print(*i)