#include <bits/stdc++.h>
using namespace std;
long long rd(long long &x) { return scanf("%lld", &x); }
long long rd(long long &x, long long &y) { return scanf("%lld %lld", &x, &y); }
long long rd(long long &x, long long &y, long long &z) {
  return scanf("%lld %lld %lld", &x, &y, &z);
}
long long rd(long long &x, long long &y, long long &z, long long &s) {
  return scanf("%lld %lld %lld %lld", &x, &y, &z, &s);
}
void shaon() { cerr << endl; }
template <typename T, typename... north>
void shaon(T arg, const north &...rest) {
  cerr << arg << ' ';
  shaon(rest...);
}
long long n, pos, x = 1, y = 1, tp;
char s[200005], ST[10], t[200005];
void reverse2(char *a, int b, int e) {
  while (b <= e) {
    swap(a[b], a[e]);
    b++, e--;
  }
}
int main() {
  rd(n);
  while ((n - x) + (n - y) >= n) {
    long long xx = x, yy = y + 1;
    if (yy <= n) {
      printf("? %lld %lld %lld %lld\n", xx, yy, n, n);
      cout.flush();
      scanf(" %s", ST);
      if (ST[0] == 'Y') {
        x = xx, y = yy;
        s[pos++] = 'R';
        continue;
      } else if (ST[0] == 'N') {
        s[pos++] = 'D';
        x++;
      } else
        return 0;
    } else {
      while (x != n) {
        s[pos++] = 'D';
        x++;
      }
      break;
    }
  }
  long long u = n, v = n;
  if (x != n || y != n) {
    while (abs(x - u) + abs(y - v) > 1) {
      long long uu = u - 1, vv = v;
      printf("? 1 1 %lld %lld\n", uu, vv);
      cout.flush();
      scanf(" %s", ST);
      if (ST[0] == 'Y') {
        u = uu, v = vv;
        t[tp++] = 'D';
      } else if (ST[0] == 'N') {
        v--;
        t[tp++] = 'R';
      } else
        return 0;
    }
    if (x == u)
      s[pos++] = 'R';
    else
      s[pos++] = 'D';
  }
  s[pos] = '\0';
  t[tp] = '\0';
  if (strlen(t)) reverse2(t, 0, strlen(t) - 1);
  printf("! %s%s", s, t);
  cout.flush();
  return 0;
}
