#include <bits/stdc++.h>
using namespace std;
long long n, m, a, b, c, i, j, k, l, tot, t[6];
struct node {
  long long x, y, v;
} f[10];
char ans[1000005];
inline bool check(long long o, long long p) {
  long long rrrrr = o;
  long long oooo = o, pppp = p;
  if (o > n) return false;
  long long oo = f[4].x - o;
  oo = max(oo, 0ll);
  for (long long i = 1; i <= 4; i++) t[i] = f[i].v;
  for (long long i = 1; i <= 4; i++)
    f[i].v += abs(f[i].x - o) + abs(f[i].y - p);
  long long pp = f[4].y - max(f[1].y, p);
  for (long long i = 1; i <= 4; i++) {
    o = oooo;
    p = pppp;
    if (p <= f[4].y) {
      if (i == 1 || i == 3) {
        if (p <= f[1].y) {
          long long uu = f[1].y - p;
          long long gt = abs(f[i].x - o) + abs(f[i].y - p) - 1;
          f[i].v += (gt + gt - uu + 1) * uu / 2 +
                    (gt - uu + 2 + gt - uu + 1 + pp) * pp / 2;
        } else {
          long long uu = f[4].y - p;
          long long gt = abs(f[i].x - o) + abs(f[i].y - p) + 1;
          f[i].v += (gt + gt + uu - 1) * uu / 2;
        }
      } else {
        long long uu = f[4].y - p;
        long long gt = abs(f[i].x - o) + abs(f[i].y - p) - 1;
        f[i].v += (gt + gt - uu + 1) * uu / 2;
      }
      p = f[4].y;
    }
    if (i == 3 || i == 4) {
      if (o > f[i].x) {
        long long uu = n - o;
        long long gt = abs(f[i].x - o) + abs(f[i].y - p) + 1;
        f[i].v += (gt + gt + uu - 1) * uu / 2;
      } else {
        long long uu = n - f[i].x;
        long long rr = f[i].x - o;
        long long gt = abs(f[i].x - o) + abs(f[i].y - p) - 1;
        f[i].v += (gt + gt - rr + 1) * rr / 2 +
                  (gt - rr + 2 + gt - rr + 1 + uu) * uu / 2;
      }
    } else {
      long long uu = n - o;
      long long gt = abs(f[i].x - o) + abs(f[i].y - p) + 1;
      f[i].v += (gt + gt + uu - 1) * uu / 2;
    }
    o = n;
    long long gt = abs(f[i].x - o) + abs(f[i].y - p) + 1;
    long long uu = n - p;
    f[i].v += (gt + gt + uu - 1) * uu / 2;
    p = n;
  }
  if (f[4].v > m) return false;
  if (f[1].v > m) return false;
  if (f[2].v > m) return false;
  if (f[3].v <= m) return true;
  if (rrrrr <= f[4].x) {
    long long gt = f[3].v - m;
    long long gtw = m - f[2].v;
    long long ooo = oo * pp;
    if (gt > gtw || gt > ooo) return false;
    return true;
  } else
    return false;
}
int main() {
  ;
  scanf("%I64d%I64d%I64d%I64d%I64d", &n, &m, &a, &b, &c);
  long long d = a + c - 1, e = b + c - 1;
  f[1].x = a, f[1].y = b;
  f[2].x = a, f[2].y = e;
  f[3].x = d, f[3].y = b;
  f[4].x = d, f[4].y = e;
  long long nx = 1, ny = 1;
  for (i = 1; i < f[1].x; i++) {
    ans[tot++] = 'R';
    nx++;
    for (j = 1; j <= 4; j++) f[j].v += (abs(f[j].x - nx) + abs(f[j].y - ny));
  }
  while (nx != n || ny != n) {
    if (check(nx + 1, ny))
      ans[tot++] = 'R', nx++;
    else
      ans[tot++] = 'U', ny++;
    if (ny > n) {
      printf("Impossible\n");
      return 0;
    }
    for (i = 1; i <= 4; i++) f[i].v = t[i];
    for (j = 1; j <= 4; j++) f[j].v += abs(f[j].x - nx) + abs(f[j].y - ny);
    for (j = 1; j <= 4; j++)
      if (f[j].v > m) {
        printf("Impossible\n");
        return 0;
      }
  }
  for (j = 1; j <= 4; j++)
    if (f[j].v > m) {
      printf("Impossible\n");
      return 0;
    }
  for (i = 0; i < tot; i++) printf("%c", ans[i]);
}
