func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   inline T sqr(T a) {     return a * a;   };   template <typename T>   void dprint(T begin, T end) {     for (auto i = begin; i != end; i++) cerr << (*i) <<    ;     cerr <<   n ;   };   const int maxn = 500 + 5;   int n, step[maxn * 2];   string ans;   pair<int, int> loc[maxn * 2];   bool query(int r1, int c1, int r2, int c2) {     cout <<  ?   << r1 <<     << c1 <<     << r2 <<     << c2 << endl;     cout.flush();     cin >> ans;     return ans ==  YES ;   }   int main() {     scanf( %d , &n);     loc[0] = pair<int, int>(1, 1);     for (int i = 0; i < n - 1; i++) {       if (query(loc[i].first + 1, loc[i].second, n, n)) {         loc[i + 1] = pair<int, int>(loc[i].first + 1, loc[i].second);         step[i] = 0;         continue;       }       if (query(loc[i].first, loc[i].second + 1, n, n)) {         loc[i + 1] = pair<int, int>(loc[i].first, loc[i].second + 1);         step[i] = 1;         continue;       }     }     loc[2 * n - 2] = pair<int, int>(n, n);     for (int i = 2 * n - 2; i > n; i--) {       if (query(loc[i - n].first, loc[i - n].second, loc[i].first,                 loc[i].second - 1)) {         loc[i - 1] = pair<int, int>(loc[i].first, loc[i].second - 1);         step[i - 1] = 1;         continue;       }       if (query(loc[i - n].first, loc[i - n].second, loc[i].first - 1,                 loc[i].second)) {         loc[i - 1] = pair<int, int>(loc[i].first - 1, loc[i].second);         step[i - 1] = 0;         continue;       }     }     if (loc[n].first == loc[n - 1].first + 1)       step[n - 1] = 0;     else       step[n - 1] = 1;     cout <<  !  ;     for (int i = 0; i < 2 * n - 2; i++)       if (step[i] == 0)         cout <<  D ;       else         cout <<  R ;     cout << endl;     cout.flush();     return 0;   }   