#include <bits/stdc++.h>
using namespace std;
void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const string &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }
template <typename T, typename V>
void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T>
void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x) cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v)) cerr << ", ";
  _print(v...);
}
const int M = 2e3 + 3;
const long long INF = 1e18;
const int MOD = 1e9 + 7;
bool query(int r1, int c1, int r2, int c2) {
  cout << "? " << r1 << " " << c1 << " " << r2 << " " << c2 << endl;
  string rep;
  cin >> rep;
  assert(rep != "BAD");
  return (rep == "YES");
}
int dist(int r1, int c1, int r2, int c2) {
  int ret = abs(r1 - r2) + abs(c1 - c2);
  return abs(r1 - r2) + abs(c1 - c2);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  int r = 1, c = 1;
  string Left, Right;
  while (dist(r, c, n, n) > n - 1) {
    if (query(r, c + 1, n, n))
      c++, Left += "R";
    else
      r++, Left += "D";
  }
  int lr = r, lc = c;
  r = n, c = n;
  while (1) {
    if (r == lr and c == lc) break;
    if (query(1, 1, r - 1, c))
      Right += "D", r--;
    else
      Right += "R", c--;
  }
  reverse(Right.begin(), Right.end());
  cout << "! " << Left + Right << endl;
}
