#include using namespace std; bool check(int i_start, int j_start, int i_end, int j_end) { int flag=0; if(abs(i_end-i_start)%4==0) { if(abs(j_end-j_start)%2==0) { flag=1; } else { flag=0; } } else if(abs(i_end-i_start)%2==0) { if(!abs(j_end-j_start)%2==0) { flag=1; } else { flag=0; } } else { flag=0; } return (flag); } void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { if(check(i_start,j_start,i_end,j_end)) { string path; int count=0; int i=i_start,j=j_start; while(i!=i_end || j!=j_end) { if(i_end-i<0) {//move up if(j-1==-1) {//move right i=i-2; j=j+1; count++; path.append("UR "); } else if(j+1==n) {//move left i=i-2; j=j-1; count++; path.append("UL "); } else if(j_end-j<=0 || ((i-i_end)/2-2)==abs(j-j_end)) {//move left i=i-2; j=j-1; count++; path.append("UL "); } else {//move right i=i-2; j=j+1; count++; path.append("UR "); } } else if(j_end-j>0 &&(i_end==i || !((i_end-i)/2==(j_end-j)))) {//same line //move right j=j+2; count++; path.append("R "); } else if(i_end-i>0) {//move down if(j-1==-1) {//move right i=i+2; j=j+1; count++; path.append("LR "); } else if(j+1==n) {//move left i=i+2; j=j-1; count++; path.append("LL "); } else if(j_end-j>=0 || ((i_end-i)/2-2)==abs(j-j_end)) {//move right i=i+2; j=j+1; count++; path.append("LR "); } else {//move left i=i+2; j=j-1; count++; path.append("LL "); } } else if(j_end-j<0 && i_end==i ) {//move left j=j-2; count++; path.append("L "); } } cout<> n; int i_start; int j_start; int i_end; int j_end; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }