#include <bits/stdc++.h>
using namespace std;
const int N = 200005, L = 2000005;
int fac[L], ifac[L];
template <typename T>
inline void read(T& x) {
  x = 0;
  char c = getchar();
  bool f = 0;
  while (c < '0' || c > '9') f |= (c == '-'), c = getchar();
  while (c >= '0' && c <= '9') x = x * 10 + (c ^ 48), c = getchar();
  if (f) x = -x;
}
void Fail() { exit(puts("NO") & 0); }
struct Info {
  long long a, b, c;
  Info() {}
  Info(long long a, long long b, long long c) : a(a), b(b), c(c) {}
  friend bool operator<(Info x, Info y) { return x.b < y.b; }
};
Info info[2][N];
int n, l;
bool ans[2][L];
const char dir[2][2] = {{'D', 'L'}, {'R', 'U'}};
void calc(Info* info, bool* ans) {
  int L = 0, R = l;
  sort(info + 1, info + 1 + n);
  for (int i = 2; i <= n; ++i) {
    long long A = info[i].a - info[i - 1].a, wR = info[i].c - info[i - 1].c,
              wL = wR + info[i - 1].b - info[i].b;
    if (A == 0) {
      if (wL > 0 || wR < 0) Fail();
    }
    if (A > 0) {
      L = max(L, (int)ceil(wL / (double)A));
      R = min(R, (int)floor(wR / (double)A));
    }
    if (A < 0) {
      L = max(L, (int)ceil(wR / (double)A));
      R = min(R, (int)floor(wL / (double)A));
    }
  }
  if (L > R) Fail();
  for (int x = L; x <= R; ++x) {
    bool flag = true;
    for (int i = 2, tot = 0; i <= n; ++i) {
      long long cnt =
          info[i].c - info[i - 1].c - x * (info[i].a - info[i - 1].a);
      if (cnt < 0) {
        flag = false;
        break;
      }
      for (int j = info[i - 1].b + 1; j <= info[i].b; ++j)
        if (cnt)
          ans[++tot] = 1, cnt--;
        else
          ans[++tot] = 0;
    }
    if (flag) return;
  }
  Fail();
}
int main() {
  read(n), read(l);
  for (int i = 1; i <= n; ++i) {
    long long t, x, y;
    read(t), read(x), read(y);
    if ((x + y + t) & 1) Fail();
    info[0][i] = Info(t / l, t % l, (x + y + t) / 2);
    info[1][i] = Info(t / l, t % l, (y - x + t) / 2);
  }
  info[0][n + 1] = info[1][n + 1] = Info(0, 0, 0);
  info[0][n + 2] = info[1][n + 2] = Info(-1, l, 0);
  n += 2;
  calc(info[0], ans[0]);
  calc(info[1], ans[1]);
  for (int i = 1; i <= l; ++i) putchar(dir[ans[0][i]][ans[1][i]]);
  return 0;
}
