/// Md.ASADUZZAMAN /// Dept of ICT /// MBSTU #include using namespace std; #define ll long long #define ull unsigned long long #define fr(i,a,b) for(int i=(a);i<(b);i++) #define rfr(i,a,b) for(int i=(b-1);i>=(a);i--) #define freach(i, c) for( __typeof( (c).begin() ) i = (c).begin(); i != (c).end(); ++i ) #define rep(i,n) for(int i=0;i<(n);i++) #define rrep(i,n) for(int i=(n)-1;i>=0;i--) #define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it++) #define PINF INT_MAX #define MINF INT_MIN #define pb push_back #define m_p make_pair #define all(a) (a).begin(),(a).end() #define mset(a,c) memset(a,c,sizeof a) #define clr(a) memset(a,0,sizeof a) #define pii pair #define pll pair #define pcc pair #define pic pair #define pci pair #define psi pair #define pis pair #define ff first #define ss second #define vs vector #define vi vector #define vll vector #define vpi vector > #define vpl vector > #define vpcl vector > #define vpsl vector > #define qi queue #define ql queue #define qll queue #define PQ priority_queue #define mpii map #define mpsl map #define mpcl map #define mpll map #define mpss map #define stl set #define sts set /// Bug #define bug(x) cout<<#x<<": "<eps+(y)?1:0)) #define sqr(x) x*x ///I/O #define input() freopen("in0.txt","r",stdin) #define output() freopen("out0.txt","w",stdout) #define fast() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define ppc(x,y) cout<inline string toString(T a) { ostringstream os(""); os << a; return os.str();} templateinline ll toLong(T a) {ll res; istringstream os(a); os >> res; return res;} ///----------------------Main Code-------------------------------------/// ll N; vpl v; int row[] = { 2, 2, -2, -2, 0, 0}; int col[] = { -1, 1, 1, -1, 2, -2}; bool valid(int x, int y) { if (x < 0 || y < 0 || x >= N || y >= N) return false; return true; } struct Node { int x, y, dist; bool const operator==(const Node& o) const { return x == o.x && y == o.y; } bool operator<(const Node& o) const { return x > o.x || (x == o.x && y > o.y); } }; int BFS(Node src, Node dest) { map visited; priority_queue q; q.push(src); while (!q.empty()) { Node node = q.top(); q.pop(); int x = node.x; int y = node.y; v.pb(m_p(x,y)); int dist = node.dist; if (x == dest.x && y == dest.y) return dist; if (!visited.count(node)) { visited[node] = true; for (int i = 0; i < 6; ++i) { int x1 = x + row[i]; int y1 = y + col[i]; if (valid(x1, y1)) { q.push({x1, y1, dist + 1}); } } } } return INT_MAX; } int main() { #ifndef ONLINE_JUDGE // input(); // output(); #endif fast(); Node src, dest; ll m, n, o, p; while (cin >> N >> src.x >> src.y >> dest.x >> dest.y) { v.clear(); src.dist=0; // v.pb(m_p(src.x,src.y)); m = BFS(src, dest); //v.pb(m_p(dest.x,dest.y)); if (m == INT_MAX) cout << "Impossible" << endl; else { cout << m << endl; vs v1; fr(i,1,v.size()) { string s=""; if(v[i].ffv[i-1].ff) { s+='L'; if(v[i].ss