#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const double eps = 1e-9;
pair<int, int> operator+(const pair<int, int>& p1, const pair<int, int>& p2) {
  return pair<int, int>(p1.first + p2.first, p1.second + p2.second);
}
pair<int, int> operator-(const pair<int, int>& p1, const pair<int, int>& p2) {
  return pair<int, int>(p1.first - p2.first, p1.second - p2.second);
}
int operator*(const pair<int, int>& p1, const pair<int, int>& p2) {
  return (p1.first * p2.first + p1.second * p2.second);
}
int operator^(const pair<int, int>& p1, const pair<int, int>& p2) {
  return (p1.first * p2.second - p1.second * p2.first);
}
vector<pair<int, int> > v;
vector<pair<int, int> > rev;
char a[5];
char ans[2004] = {};
int main() {
  int n;
  scanf("%d", &n);
  ;
  int nx = 1;
  int ny = 1;
  v.push_back(pair<int, int>(1, 1));
  while (nx + ny < 1 + n) {
    printf("? %d %d %d %d\n", nx, ny + 1, n, n);
    fflush(stdout);
    scanf("%s", a);
    if (a[0] == 'Y') {
      ny++;
    } else {
      nx++;
    }
    v.push_back(pair<int, int>(nx, ny));
  }
  int sx = n;
  int sy = n;
  rev.push_back(pair<int, int>(n, n));
  int sz = ((int)v.size()) - 2;
  int i = 0;
  while (sx + sy > 1 + n) {
    printf("? %d %d %d %d\n", v[sz - i].first, v[sz - i].second, sx - 1, sy);
    fflush(stdout);
    scanf("%s", a);
    if (a[0] == 'Y') {
      sx--;
    } else {
      sy--;
    }
    rev.push_back(pair<int, int>(sx, sy));
    i++;
  }
  int idx = 0;
  for (i = 0; i < ((int)v.size()) - 1; i++) {
    if (v[i + 1].first > v[i].first) {
      ans[idx++] = 'D';
    } else {
      ans[idx++] = 'R';
    }
  }
  for (i = ((int)rev.size()) - 1; i > 0; i--) {
    if (rev[i - 1].first > rev[i].first) {
      ans[idx++] = 'D';
    } else {
      ans[idx++] = 'R';
    }
  }
  printf("! %s", ans);
}
