func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1000000007;   const int MAX = 505;   int n, grid[MAX][MAX];   char s[5];   bool valid(int x, int y) {     if (x < 1) return false;     if (y < 1) return false;     if (x > n) return false;     if (y > n) return false;     return true;   }   bool dist(int x1, int y1, int x2, int y2) {     return ((abs(x1 - x2) + abs(y1 - y2)) >= n - 1);   }   bool cmd(int x1, int y1, int x2, int y2) {     printf( ? %d %d %d %d n , x1, y1, x2, y2);     fflush(stdout);     scanf( %s , s);     return (s[0] ==  Y );   }   int main() {     scanf( %d , &n);     grid[1][1] = 1;     grid[n][n] = 1;     int x = 1, y = 1;     while (true) {       int ok = 0;       if (valid(x, y + 1)) {         if (dist(x, y + 1, n, n)) {           if (cmd(x, y + 1, n, n)) {             grid[x][y + 1] = 1;             ok = 1;             y++;           }         }       }       if (ok) continue;       if (valid(x + 1, y)) {         if (dist(x + 1, y, n, n)) {           if (cmd(x + 1, y, n, n)) {             grid[x + 1][y] = 1;             ok = 1;             x++;           }         }       }       if (ok) continue;       break;     }     x = n, y = n;     while (true) {       int ok = 0;       if (valid(x - 1, y)) {         if (dist(x - 1, y, 1, 1)) {           if (cmd(1, 1, x - 1, y)) {             grid[x - 1][y] = 1;             ok = 1;             x--;           }         }       }       if (ok) continue;       if (valid(x, y - 1)) {         if (dist(x, y - 1, 1, 1)) {           if (cmd(1, 1, x, y - 1)) {             grid[x][y - 1] = 1;             ok = 1;             y--;           }         }       }       if (ok) continue;       break;     }     string ans =   ;     x = 1, y = 1;     while (true) {       if (x == n and y == n) break;       if (grid[x][y + 1])         ans +=  R , y++;       else         ans +=  D , x++;     }     printf( !  );     for (int i = 0; i < ans.size(); i++) printf( %c , ans[i]);     printf(  n );     fflush(stdout);     return 0;   }   