#include <bits/stdc++.h>
using namespace std;
inline char gc() {
  static char buf[100000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline long long read() {
  long long x = 0;
  char ch = getchar();
  bool positive = 1;
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') positive = 0;
  for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  return positive ? x : -x;
}
inline void write(long long a) {
  if (a < 0) {
    a = -a;
    putchar('-');
  }
  if (a >= 10) write(a / 10);
  putchar('0' + a % 10);
}
inline void writeln(long long a) {
  write(a);
  puts("");
}
inline void wri(long long a) {
  write(a);
  putchar(' ');
}
inline unsigned long long rnd() {
  return ((unsigned long long)rand() << 30 ^ rand()) << 4 | rand() % 4;
}
const long long N = 400005;
long long DQ[4], t;
long long n, a, b, c, dq, X[4], Y[4];
char ans[N];
long long dc(long long a, long long b) {
  if (a == b) return 0;
  if (a < b)
    a++;
  else
    a--;
  return (a + b) * (abs(a - b) + 1) / 2;
}
bool check(long long x, long long y) {
  long long A[4];
  memcpy(A, DQ, sizeof(DQ));
  if (x != 1 || y != 1)
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      A[i] -= abs(X[i] - x) + abs(Y[i] - y);
  if (x < a) {
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      A[i] -= dc(X[i] - x + abs(Y[i] - y), X[i] - a + abs(Y[i] - y));
    x = a;
  }
  if (y < b) {
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      A[i] -= dc(abs(X[i] - x) + Y[i] - y, abs(X[i] - x) + Y[i] - b);
    y = b;
  }
  for (long long i = (long long)(0); i <= (long long)(3); i++)
    A[i] -=
        dc(max(a + c, x) - X[i] + max(b + c, y) - Y[i], 2 * n - X[i] - Y[i]);
  if (x > a + c) {
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      A[i] -= dc(x - X[i] + abs(y - Y[i]), x - X[i] + b + c - Y[i]);
  } else if (y > b + c) {
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      A[i] -= dc(y - Y[i] + abs(x - X[i]), y - Y[i] + a + c - X[i]);
  } else {
    for (long long i = (long long)(2); i <= (long long)(3); i++)
      A[i] -= dc(abs(x - X[i]) + abs(y - Y[i]), a + c + b + c - X[i] - Y[i]);
    long long sum = (a + b + 2 * c - x - y) * c * 2;
    long long mn = dc(a + c - x + y - b, y - b) + dc(y - b, c),
              mx = dc(a + c - x + y - b, a + c - x + c) + dc(a + c - x + c, c);
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      if (A[i] < 0) return 0;
    if ((A[0] & 1) != (mx & 1)) A[0]--;
    return A[0] >= mn && max(sum - mx, sum - A[0]) <= A[1];
  }
  for (long long i = (long long)(0); i <= (long long)(3); i++)
    if (A[i] < 0) return 0;
  return 1;
}
signed main() {
  n = read(), t = read(), a = read(), b = read(), c = read() - 1;
  long long x = 1, y = 1;
  for (long long i = (long long)(0); i <= (long long)(3); i++) DQ[i] = t;
  for (long long i = (long long)(0); i <= (long long)(3); i++) {
    X[i] = a;
    Y[i] = b;
  }
  X[0] += c;
  X[3] += c;
  Y[1] += c;
  Y[3] += c;
  if (!check(1, 1)) {
    puts("Impossible");
    return 0;
  }
  while (x < n || y < n) {
    if (y == n || (x < n && check(x + 1, y))) {
      ans[++dq] = 'R';
      x++;
    } else {
      ans[++dq] = 'U';
      y++;
    }
    for (long long i = (long long)(0); i <= (long long)(3); i++)
      DQ[i] -= abs(X[i] - x) + abs(Y[i] - y);
  }
  for (long long i = (long long)(1); i <= (long long)(dq); i++) putchar(ans[i]);
}
