#include <bits/stdc++.h>
using namespace std;
const long double PI = acos(-1);
const int _ML = 500;
const char _inpf[] = "";
const char _outf[] = "";
template <typename T, typename U>
inline ostream &operator<<(ostream &_out, const pair<T, U> &_p) {
  _out << _p.x << ' ' << _p.y;
  return _out;
}
template <typename T, typename U>
inline istream &operator>>(istream &_in, pair<T, U> &_p) {
  _in >> _p.x >> _p.y;
  return _in;
}
template <typename T>
inline ostream &operator<<(ostream &_out, const vector<T> &_v) {
  if (_v.empty()) return _out;
  _out << _v.front();
  for (auto _it = ++_v.begin(); _it != _v.end(); ++_it) _out << ' ' << *_it;
  return _out;
}
template <typename T>
inline istream &operator>>(istream &_in, vector<T> &_v) {
  for (auto &_i : _v) _in >> _i;
  return _in;
}
template <typename T>
inline ostream &operator<<(ostream &_out, const set<T> &_s) {
  if (_s.empty()) return _out;
  _out << *_s.begin();
  for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) _out << ' ' << *_it;
  return _out;
}
template <typename T>
inline ostream &operator<<(ostream &_out, const multiset<T> &_s) {
  if (_s.empty()) return _out;
  _out << *_s.begin();
  for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) _out << ' ' << *_it;
  return _out;
}
template <typename T>
inline ostream &operator<<(ostream &_out, const unordered_set<T> &_s) {
  if (_s.empty()) return _out;
  _out << *_s.begin();
  for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) _out << ' ' << *_it;
  return _out;
}
template <typename T>
inline ostream &operator<<(ostream &_out, const unordered_multiset<T> &_s) {
  if (_s.empty()) return _out;
  _out << *_s.begin();
  for (auto _it = ++_s.begin(); _it != _s.end(); ++_it) _out << ' ' << *_it;
  return _out;
}
template <typename T, typename U>
inline ostream &operator<<(ostream &_out, const map<T, U> &_m) {
  if (_m.empty()) return _out;
  _out << '(' << _m.begin()->x << ": " << _m.begin()->y << ')';
  for (auto _it = ++_m.begin(); _it != _m.end(); ++_it)
    _out << ", (" << _it->x << ": " << _it->y << ')';
  return _out;
}
template <typename T, typename U>
inline ostream &operator<<(ostream &_out, const unordered_map<T, U> &_m) {
  if (_m.empty()) return _out;
  _out << '(' << _m.begin()->x << ": " << _m.begin()->y << ')';
  for (auto _it = ++_m.begin(); _it != _m.end(); ++_it)
    _out << ", (" << _it->x << ": " << _it->y << ')';
  return _out;
}
inline void mainFunction(void) {
  int n, m, k;
  cin >> n >> m >> k;
  vector<string> v(n + 2, string(m + 2, '*'));
  int x = 228,
      y = 1488 + 'm' + 'i' + 's' + 'h' + 'k' + 'a' + '=' + 'g' + 'a' + 'y';
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      cin >> v[i][j];
      if (v[i][j] == 'X') {
        v[i][j] = '.';
        x = i;
        y = j;
      }
    }
  }
  const int dx[] = {1, 0, 0, -1};
  const int dy[] = {0, -1, 1, 0};
  const int N = 1000 * 1000 + 228;
  vector<vector<int>> d(n + 2, vector<int>(m + 2, N));
  static int qx[N];
  static int qy[N];
  int ql = 0;
  int qr = 1;
  qx[0] = x;
  qy[0] = y;
  d[x][y] = 0;
  while (ql != qr) {
    int xx = qx[ql];
    int yy = qy[ql];
    ++ql;
    for (int j = 0; j < 4; ++j) {
      if (v[xx + dx[j]][yy + dy[j]] == '.' && d[xx + dx[j]][yy + dy[j]] == N) {
        d[xx + dx[j]][yy + dy[j]] = d[xx][yy] + 1;
        qx[qr] = xx + dx[j];
        qy[qr] = yy + dy[j];
        ++qr;
      }
    }
  }
  const char c[] = {'D', 'L', 'R', 'U'};
  static char p[228];
  p['U'] = 'D';
  p['D'] = 'U';
  p['R'] = 'L';
  p['L'] = 'R';
  string s;
  for (int i = 0; i < k; ++i) {
    int j;
    for (j = 0; j < 4; ++j) {
      if (v[x + dx[j]][y + dy[j]] == '.' &&
          d[x + dx[j]][y + dy[j]] <= k - i - 1) {
        break;
      }
    }
    if (j == 4) {
      cout << "IMPOSSIBLE" << '\n';
      return;
    }
    s += c[j];
    x += dx[j];
    y += dy[j];
  }
  cout << s << '\n';
}
int main() {
  if (_inpf[0] != '\0') assert(freopen(_inpf, "r", stdin) != nullptr);
  if (_outf[0] != '\0') assert(freopen(_outf, "w", stdout) != nullptr);
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  cout << setprecision(20);
  mainFunction();
}
