#include <bits/stdc++.h>
using namespace std;
pair<string, string> find_optimal(vector<pair<int, int>>* v);
void make_path(string*, int, int);
int main(void) {
  vector<pair<string, string>> result;
  int t, n;
  int x, y;
  scanf("%d", &t);
  for (int i = 0; i < t; i++) {
    scanf("%d", &n);
    vector<pair<int, int>> v;
    for (int j = 0; j < n; j++) {
      scanf("%d %d", &x, &y);
      v.push_back(make_pair(x, y));
    }
    result.push_back(find_optimal(&v));
  }
  for (int i = 0; i < t; i++) {
    if (result[i].first == "NO")
      cout << result[i].first << endl;
    else
      cout << result[i].first << '\n' << result[i].second << endl;
  }
  return 0;
}
void make_path(string* s, int x, int y) {
  for (int i = 0; i < x; i++) {
    (*s) += "R";
  }
  for (int i = 0; i < y; i++) {
    (*s) += "U";
  }
}
pair<string, string> find_optimal(vector<pair<int, int>>* v) {
  sort((*v).begin(), (*v).end());
  int len = (*v).size();
  string result;
  make_path(&result, (*v)[0].first, (*v)[0].second);
  for (int i = 1; i < len; i++) {
    if ((*v)[i].second < (*v)[i - 1].second)
      return make_pair("NO", "");
    else
      make_path(&result, (*v)[i].first - (*v)[i - 1].first,
                (*v)[i].second - (*v)[i - 1].second);
  }
  return make_pair("YES", result);
}
