#include <bits/stdc++.h>
using namespace std;
int n, a, b, c;
long long t;
struct point {
  long long x, y;
};
point pt[4];
long long vl[4], nv[4];
long long nowx, nowy;
bool check() {
  int i, j, s, p, q;
  long long now, vp, nx, ny, mx, my, bs, bx, by;
  for (i = 0; i < 4; i++) nv[i] = vl[i];
  for (i = 0; i < 4; i++) {
    nx = nowx;
    ny = nowy;
    if (ny < pt[i].y) {
      nv[i] -= (long long)abs(pt[i].x - nx) * (long long)(pt[i].y - ny) +
               (long long)pt[i].y * (long long)(pt[i].y - ny) -
               (long long)(ny + 1 + pt[i].y) * (long long)(pt[i].y - ny) / 2;
      ny = pt[i].y;
    }
    if (nx < pt[i].x) {
      nv[i] -= (long long)abs(pt[i].y - ny) * (long long)(pt[i].x - nx) +
               (long long)pt[i].x * (long long)(pt[i].x - nx) -
               (long long)(nx + 1 + pt[i].x) * (long long)(pt[i].x - nx) / 2;
      nx = pt[i].x;
    }
    now = abs(nx - pt[i].x) + abs(ny - pt[i].y);
    vp = abs(n - nx) + abs(n - ny);
    nv[i] -= now * vp + vp * (vp + 1) / 2;
    if (nv[i] < 0) return false;
  }
  nx = nowx;
  ny = nowy;
  if (nx < a) nx = a;
  if (ny < b) ny = b;
  if (nx >= pt[2].x || ny >= pt[2].y) return true;
  bx = pt[2].x - nx;
  by = pt[2].y - ny;
  long long low, high, mid;
  low = max(bx, by) + 1;
  high = bx + by;
  while (low <= high) {
    mid = (low + high) / 2;
    now = (bx + by + mid) * (bx + by - mid + 1) / 2;
    if (now <= nv[3] / 2)
      high = mid - 1;
    else
      low = mid + 1;
  }
  if (low == max(bx, by) + 1) return true;
  now = nv[3] / 2 - (bx + by + low) * (bx + by - low + 1) / 2;
  if (now >= bx + 1) {
    nx = now;
    ny = 0;
  } else {
    if (bx < by) {
      nx = max(bx, by) + 1;
      ny = max(bx, by) + 1 - now;
    } else {
      ny = low - 1 - now;
      nx = low - 1;
    }
  }
  high = low - 1;
  low = max(low - min(bx, by), by + 1);
  now = (low + high) * (high - low + 1) / 2;
  if (nx <= high && nx >= low) now -= nx;
  if (ny <= high && ny >= low) now -= ny;
  high = max(bx, by);
  low = max(bx, by) - min(bx, by) + 1;
  now -= (low + high) * (high - low + 1) / 2;
  int ct = 0;
  if (nx <= high && nx >= low) {
    ct++;
    now += nx;
  }
  if (ny <= high && ny >= low) {
    now += ny;
    ct++;
  }
  for (i = low; i >= 0 && ct > 0; i--) {
    if (i != nx && i != ny) {
      now -= i;
      ct--;
    }
  }
  return now <= nv[1] / 2;
}
int main() {
  int i, j, s, p, q;
  bool ok;
  scanf("%d%I64d%d%d%d", &n, &t, &a, &b, &c);
  for (i = 0; i < 4; i++) vl[i] = t;
  pt[0].x = a;
  pt[0].y = b;
  pt[1].x = a + c - 1;
  pt[1].y = b;
  pt[2].x = a + c - 1;
  pt[2].y = b + c - 1;
  pt[3].x = a;
  pt[3].y = b + c - 1;
  nowx = 1;
  nowy = 1;
  if (!check())
    puts("Impossible");
  else {
    for (i = 0; i < 2 * n - 2; i++) {
      nowx++;
      ok = false;
      for (j = 0; j < 4; j++)
        vl[j] -= abs(nowx - pt[j].x) + abs(nowy - pt[j].y);
      if (nowx <= n) {
        if (check()) ok = true;
      }
      if (!ok) {
        for (j = 0; j < 4; j++)
          vl[j] += abs(nowx - pt[j].x) + abs(nowy - pt[j].y);
        nowx--;
        nowy++;
        for (j = 0; j < 4; j++)
          vl[j] -= abs(nowx - pt[j].x) + abs(nowy - pt[j].y);
      }
      if (ok)
        putchar('R');
      else
        putchar('U');
    }
    printf("\n");
  }
  return 0;
}
