#include #define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++) using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, t; cin >> n >> t; vector a(n, vector(n)); rep(i, 0, n) rep(j, 0, n) cin >> a[i][j]; int hand = 0; int ni = 0, nj = 0; string ans; auto move = [&](int i, int j) { while (ni > i) { ans += 'U'; ni--; } while (ni < i) { ans += 'D'; ni++; } while (nj > j) { ans += 'L'; nj--; } while (nj < j) { ans += 'R'; nj++; } ni = i; nj = j; }; auto copy = [&](int i, int j) { move(i, j); ans += 'C'; hand ^= a[i][j]; }; auto write = [&](int i, int j) { move(i, j); ans += 'W'; a[i][j] ^= hand; }; rep(i, 0, n) rep(j, 0, n) { if ((hand == 0) && ((a[i][j] >> 19) & 1)) { copy(i, j); } } rep(i, 0, n) { if (i % 2 == 0) { for (int j = 0; j < n; j++) { if (!((a[i][j] >> 19) & 1)) { write(i, j); } } } else { for (int j = n - 1; j >= 0; j--) { if (!((a[i][j] >> 19) & 1)) { write(i, j); } } } } for (int d = 18; d >= 0; d--) { vector> exclusion(n, vector(n)); int mask = (1 << 20) - (1 << (d + 2)); rep(i, 0, n) rep(j, 0, n) { if ((a[i][j] & mask) != mask) { exclusion[i][j] = 1; } } int one_i, one_j, one_dist = 1e9; int zero_i, zero_j, zero_dist = 1e9; rep(i, 0, n) rep(j, 0, n) { if (exclusion[i][j]) continue; int dist = abs(i - ni) + abs(j - nj); if ((a[i][j] >> d) & 1) { if (dist < one_dist) { one_dist = dist; one_i = i; one_j = j; } } else { if (dist < zero_dist) { zero_dist = dist; zero_i = i; zero_j = j; } } } if (one_dist == 1e9 || zero_dist == 1e9) { break; } write(one_i, one_j); copy(one_i, one_j); copy(zero_i, zero_j); if (d % 2 == 1) { for (int i = 0; i < n; i++) { if (i % 2 == 0) { for (int j = 0; j < n; j++) { if (exclusion[i][j]) continue; if (!((a[i][j] >> d) & 1)) { write(i, j); } } } else { for (int j = n - 1; j >= 0; j--) { if (exclusion[i][j]) continue; if (!((a[i][j] >> d) & 1)) { write(i, j); } } } } } else { for (int i = n - 1; i >= 0; i--) { if (i % 2 == 0) { for (int j = n - 1; j >= 0; j--) { if (exclusion[i][j]) continue; if (!((a[i][j] >> d) & 1)) { write(i, j); } } } else { for (int j = 0; j < n; j++) { if (exclusion[i][j]) continue; if (!((a[i][j] >> d) & 1)) { write(i, j); } } } } } } ans = ans.substr(0, t); for (auto &c : ans) { cout << c << '\n'; } }