#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
template <class T, class U>
inline void Max(T &a, U b) {
  if (a < b) a = b;
}
template <class T, class U>
inline void Min(T &a, U b) {
  if (a > b) a = b;
}
inline void add(int &a, int b) {
  a += b;
  while (a >= 998244353) a -= 998244353;
}
int pow(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = ans * (long long)a % 998244353;
    a = (long long)a * a % 998244353;
    b >>= 1;
  }
  return ans;
}
string s, t, ss;
int query(int first, int second, int x1, int y1) {
  cout << "? " << first << " " << second << " " << x1 << " " << y1 << "\n";
  fflush(stdout);
  cin >> t;
  return t == "YES";
}
int main() {
  int j, i, k, ca = 0, m = 0, K, n;
  scanf("%d", &n);
  int first = 1, second = 1;
  s = "! ";
  while (abs(first - n) + abs(second - n) - 1 >= n - 1) {
    k = query(first, second + 1, n, n);
    if (k)
      s += 'R', second++;
    else
      s += 'D', first++;
  }
  int tx = first, ty = second;
  first = n, second = n;
  while (abs(first - 1) + abs(second - 1) - 1 >= n - 1) {
    k = query(1, 1, first - 1, second);
    if (k)
      ss += "D", first--;
    else
      ss += "R", second--;
  }
  reverse(ss.begin(), ss.end());
  s += ss;
  puts(s.c_str());
}
