#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-9;
static const double PI = acos(-1.0);
const int dx[4] = {1, 0};
const int dy[4] = {0, 1};
long long px[4];
long long py[4];
long long n, t, a, b, c;
string ans;
long long lef, top, righ, bottom;
inline bool naraba(bool x, bool y) { return !x || y; }
long long skip(long long fx, long long fy, long long tx, long long ty,
               long long sx, long long sy) {
  long long dist = abs(fx - tx) + abs(fy - ty);
  long long ini = abs(fx - sx) + abs(fy - sy);
  long long end = abs(tx - sx) + abs(ty - sy);
  long long sign = ini < end ? 1 : -1;
  long long s = ini * dist + sign * dist * (dist + 1) / 2;
  return s;
}
void skip(long long &fx, long long &fy, long long tx, long long ty,
          vector<long long> &score) {
  for (int i = 0; i < (int)(4); i++) {
    score[i] += skip(fx, fy, tx, ty, px[i], py[i]);
  }
  fx = tx;
  fy = ty;
}
bool ok(long long sx, long long sy, vector<long long> score) {
  assert(naraba(sx < righ, sy <= top));
  assert(naraba(sx < lef, sy == 0));
  long long x = sx;
  long long y = sy;
  long long mx = -1;
  long long my = -1;
  if (x < lef) {
    skip(x, y, lef, y, score);
  }
  if (y < bottom) {
    skip(x, y, x, bottom, score);
  }
  if (lef <= x && x <= righ && bottom <= y && y <= top) {
    mx = x;
    my = y;
    x = righ;
    y = top;
  }
  if (righ <= x && y < top) {
    skip(x, y, x, top, score);
  }
  if (righ <= x && top <= y) {
    skip(x, y, n - 1, n - 1, score);
  }
  if (mx != -1) {
    score[0] += skip(mx, my, righ, top, px[0], py[0]);
    score[3] += skip(mx, my, righ, top, px[3], py[3]);
    long long score1min = skip(mx, my, mx, top, px[1], py[1]) +
                          skip(mx, top, righ, top, px[1], py[1]);
    long long score1max = skip(mx, my, righ, my, px[1], py[1]) +
                          skip(righ, my, righ, top, px[1], py[1]);
    long long score2min = skip(mx, my, righ, my, px[2], py[2]) +
                          skip(righ, my, righ, top, px[2], py[2]);
    long long score2max = skip(mx, my, mx, top, px[2], py[2]) +
                          skip(mx, top, righ, top, px[2], py[2]);
    long long rest1 = t - score[1] - score1min;
    long long rest2 = t - score[2] - score2max;
    if (rest1 < 0) {
      return false;
    }
    rest2 += min(score2max - score2min, rest1 / 2 * 2);
    if (rest2 < 0) {
      return false;
    }
  }
  for (int i = 0; i < (int)(4); i++) {
    if (score[i] > t) {
      return false;
    }
  }
  return true;
}
vector<long long> step(long long sx, long long sy, int dir,
                       const vector<long long> &score) {
  vector<long long> ret = score;
  int nx = sx + dx[dir];
  int ny = sy + dy[dir];
  for (int i = 0; i < (int)(4); i++) {
    ret[i] += abs(nx - px[i]) + abs(ny - py[i]);
  }
  return ret;
}
int main() {
  while (cin >> n >> t >> a >> b >> c) {
    a--;
    b--;
    lef = a;
    righ = a + c - 1;
    bottom = b;
    top = b + c - 1;
    px[0] = lef;
    py[0] = bottom;
    px[1] = lef;
    py[1] = top;
    px[2] = righ;
    py[2] = bottom;
    px[3] = righ;
    py[3] = top;
    ans = "";
    vector<long long> score(4, 0);
    if (!ok(0, 0, score)) {
      puts("Impossible");
      continue;
    }
    int sx = 0;
    int sy = 0;
    while (sx != n - 1 || sy != n - 1) {
      if (sx == n - 1) {
        ans += "U";
        score = step(sx, sy, 1, score);
        sy++;
        assert(ok(sx, sy, score));
      } else if (sy == n - 1) {
        ans += "R";
        score = step(sx, sy, 0, score);
        sx++;
        assert(ok(sx, sy, score));
      } else {
        if (ok(sx + 1, sy, step(sx, sy, 0, score))) {
          ans += "R";
          score = step(sx, sy, 0, score);
          sx++;
        } else {
          ans += "U";
          score = step(sx, sy, 1, score);
          sy++;
        }
      }
    }
    cout << ans << endl;
  }
}
