func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1000000007;   const int INF = 213456789;   const double eps = 1e-7;   int flag1 = 2, flag2 = 2, n, m;   template <class T>   T gcd(T a, T b) {     if (!b) return a;     return gcd(b, a % b);   }   int a[110][110];   int dy[] = {1, -1, 0, 0};   int dx[] = {0, 0, -1, 1};   int prex[110][110];   int prey[110][110];   int cost[110][110];   int dd[110][110];   bool over;   int edx, edy;   void print(int nx, int ny) {     if (nx == edx && ny == edy) return;     print(prex[nx][ny], prey[nx][ny]);     if (flag1 && dd[nx][ny] == 0) printf( L n );     if (!flag1 && dd[nx][ny] == 0) printf( R n );     if (flag1 && dd[nx][ny] == 1) printf( R n );     if (!flag1 && dd[nx][ny] == 1) printf( L n );     if (flag2 && dd[nx][ny] == 2) printf( D n );     if (!flag2 && dd[nx][ny] == 2) printf( U n );     if (flag2 && dd[nx][ny] == 3) printf( U n );     if (!flag2 && dd[nx][ny] == 3) printf( D n );     fflush(stdout);     int l, r;     scanf( %d%d , &l, &r);   }   void bfs(int x, int y) {     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= m; j++) {         cost[i][j] = INF;       }     }     edx = x, edy = y;     cost[x][y] = 0;     queue<pair<int, int> > q;     q.push(make_pair(x, y));     while (!q.empty()) {       pair<int, int> tmp = q.front();       q.pop();       for (int i = 0; i < 4; i++) {         int nx = dx[i] + tmp.first, ny = dy[i] + tmp.second;         if (nx > 0 && nx <= n && ny > 0 && ny <= m && cost[nx][ny] == INF &&             a[nx][ny] != 3) {           if (a[nx][ny] == 2) {             dd[nx][ny] = i;             prex[nx][ny] = tmp.first;             prey[nx][ny] = tmp.second;             cost[nx][ny] = cost[tmp.first][tmp.second] + 1;             print(nx, ny);             over = 1;             return;           }           dd[nx][ny] = i;           prex[nx][ny] = tmp.first;           prey[nx][ny] = tmp.second;           cost[nx][ny] = cost[tmp.first][tmp.second] + 1;           q.push(make_pair(nx, ny));         }       }     }   }   void check1() {     int i = 1;     while (a[i][2] == 3) {       if (flag2)         printf( U n );       else         printf( D n );       fflush(stdout);       int l, r;       scanf( %d%d , &l, &r);       if (a[l][r] == 2) {         over = 1;         return;       }       i++;     }     printf( L n );     fflush(stdout);     int l, r;     scanf( %d%d , &l, &r);     if (a[l][r] == 2) {       over = 1;       return;     }     if (l == i && r == 2) {       flag1 = 1;       printf( R n );       fflush(stdout);       scanf( %d%d , &l, &r);       if (a[l][r] == 2) {         over = 1;         return;       }       bfs(l, r);     } else {       flag1 = 0;       bfs(l, r);     }   }   void check2() {     int i = 1;     while (a[2][i] == 3) {       if (flag1)         printf( L n );       else         printf( R n );       fflush(stdout);       int l, r;       scanf( %d%d , &l, &r);       if (a[l][r] == 2) {         over = 1;         return;       }       i++;     }     printf( U n );     fflush(stdout);     int l, r;     scanf( %d%d , &l, &r);     if (a[l][r] == 2) {       over = 1;       return;     }     if (l == 2 && r == i) {       flag2 = 1;       printf( D n );       fflush(stdout);       scanf( %d%d , &l, &r);       if (a[l][r] == 2) {         over = 1;         return;       }       bfs(l, r);     } else {       flag2 = 0;       bfs(l, r);     }   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= m; j++) {         char c;         cin >> c;         if (c ==  . )           a[i][j] = 1;         else if (c ==  F )           a[i][j] = 2;         else if (c ==  * )           a[i][j] = 3;       }     }     if (a[1][2] == 1 || a[1][2] == 2) {       printf( L n );       fflush(stdout);       int l, r;       scanf( %d%d , &l, &r);       if (a[l][r] == 2) return 0;       if (l == 1 && r == 1) {         flag1 = 0;       } else {         flag1 = 1;         printf( R n );         fflush(stdout);         scanf( %d%d , &l, &r);         if (a[l][r] == 2) return 0;       }     }     if (a[2][1] == 1 || a[2][1] == 2) {       printf( U n );       fflush(stdout);       int l, r;       scanf( %d%d , &l, &r);       if (a[l][r] == 2) return 0;       if (l == 1 && r == 1) {         flag2 = 0;       } else {         flag2 = 1;         printf( D n );         fflush(stdout);         scanf( %d%d , &l, &r);         if (a[l][r] == 2) return 0;       }     }     if (flag1 == 2) check1();     if (over) return 0;     if (flag2 == 2) check2();     if (over) return 0;     if (flag1 != 2 && flag2 != 2) bfs(1, 1);     return 0;   }   