import java.util.*;
class Solution {
public String solution(int[] numbers, String hand) {
Map<String, Number> map = new HashMap<>();
map.put("1", new Number(new Integer[]{0,0},1));
map.put("2", new Number(new Integer[]{0,1},2));
map.put("3", new Number(new Integer[]{0,2},3));
map.put("4", new Number(new Integer[]{1,0},4));
map.put("5", new Number(new Integer[]{1,1},5));
map.put("6", new Number(new Integer[]{1,2},6));
map.put("7", new Number(new Integer[]{2,0},7));
map.put("8", new Number(new Integer[]{2,1},8));
map.put("9", new Number(new Integer[]{2,2},9));
map.put("0", new Number(new Integer[]{3,1},0));
map.put("*", new Number(new Integer[]{3,0},-1));
map.put("#", new Number(new Integer[]{3,2},-1));
Number leftHandNumber = map.get("*");
Number rightHandNumber = map.get("#");
StringBuilder sb = new StringBuilder();
for(int choiceNumber : numbers){
if(choiceNumber == 1 || choiceNumber == 4 || choiceNumber == 7){
leftHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("L");
}
else if(choiceNumber == 3 || choiceNumber == 6 || choiceNumber == 9){
rightHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("R");
}
else{
Integer[] stdLocation = map.get(String.valueOf(choiceNumber)).location;
Integer[] leftLocation = leftHandNumber.location;
Integer[] rightLocation = rightHandNumber.location;
int l = Math.abs(stdLocation[0]-leftLocation[0]) + Math.abs(stdLocation[1]-leftLocation[1]);
int r = Math.abs(stdLocation[0]-rightLocation[0]) + Math.abs(stdLocation[1]-rightLocation[1]);
if(l==r){
if(hand.equals("left")){
leftHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("L");
}else{
rightHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("R");
}
}else{
if(l<r){
leftHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("L");
}else{
rightHandNumber = map.get(String.valueOf(choiceNumber));
sb.append("R");
}
}
}
}
return sb.toString();
}
class Number{
Integer[] location;
int value;
Number( Integer[] l,int v){
this.location = l;
this.value = v;
}
}
}