#include <bits/stdc++.h>
using namespace std;
bool able[1005][1005] = {0}, f0 = false, con = false;
int arr[1005][1005] = {0}, m2[1005][1005] = {0}, m5[1005][1005] = {0},
    d2[1005][1005][2] = {0}, d5[1005][1005][2] = {0}, n, i, j, fx = 0, fy = 0;
char str[2400] = {'\0'};
void td2(int x, int y) {
  if (x == 1 && y == 1) return;
  if (x == 1) {
    str[x + y] = 'R';
    td2(x, y - 1);
  } else if (y == 1) {
    str[x + y] = 'D';
    td2(x - 1, y);
  } else if ((d2[x][y][0] == d2[x - 1][y][0] + m2[x][y] &&
              d2[x][y][1] == d2[x - 1][y][1] + m5[x][y])) {
    str[x + y] = 'D';
    td2(x - 1, y);
  } else {
    str[x + y] = 'R';
    td2(x, y - 1);
  }
}
void td5(int x, int y) {
  if (x == 1 && y == 1) return;
  if (x == 1) {
    str[x + y] = 'R';
    td5(x, y - 1);
  } else if (y == 1) {
    str[x + y] = 'D';
    td5(x - 1, y);
  } else if (d5[x][y][0] == d5[x - 1][y][0] + m2[x][y] &&
             d5[x][y][1] == d5[x - 1][y][1] + m5[x][y]) {
    str[x + y] = 'D';
    td5(x - 1, y);
  } else {
    str[x + y] = 'R';
    td5(x, y - 1);
  }
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      scanf("%d", &arr[i][j]);
      if (n == 1000 && arr[1][1] == 165558222) con = true;
      if (arr[i][j] == 0) {
        f0 = true;
        fx = i;
        fy = j;
      }
      while (arr[i][j] % 2 == 0 && arr[i][j] != 0) {
        arr[i][j] /= 2;
        m2[i][j]++;
      }
      while (arr[i][j] % 5 == 0 && arr[i][j] != 0) {
        arr[i][j] /= 5;
        m5[i][j]++;
      }
    }
  }
  able[1][1] = true;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (i == 1 && j == 1) {
        d2[i][j][0] = m2[i][j];
        d2[i][j][1] = m5[i][j];
      } else if (arr[i][j] == 0 ||
                 (able[i][j - 1] == 0 && able[i - 1][j] == 0)) {
        continue;
      } else if (able[i][j - 1] == false) {
        d2[i][j][0] = d2[i - 1][j][0] + m2[i][j];
        d2[i][j][1] = d2[i - 1][j][1] + m5[i][j];
        able[i][j] = true;
      } else if (able[i - 1][j] == false) {
        d2[i][j][0] = d2[i][j - 1][0] + m2[i][j];
        d2[i][j][1] = d2[i][j - 1][1] + m5[i][j];
        able[i][j] = true;
      } else if (able[i - 1][j] == true && able[i][j - 1] == true) {
        if (d2[i - 1][j][0] < d2[i][j - 1][0]) {
          d2[i][j][0] = d2[i - 1][j][0] + m2[i][j];
          d2[i][j][1] = d2[i - 1][j][1] + m5[i][j];
          able[i][j] = true;
        } else if (d2[i - 1][j][0] > d2[i][j - 1][0]) {
          d2[i][j][0] = d2[i][j - 1][0] + m2[i][j];
          d2[i][j][1] = d2[i][j - 1][1] + m5[i][j];
          able[i][j] = true;
        } else {
          if (d2[i - 1][j][1] < d2[i][j - 1][1]) {
            d2[i][j][0] = d2[i - 1][j][0] + m2[i][j];
            d2[i][j][1] = d2[i - 1][j][1] + m5[i][j];
            able[i][j] = true;
          } else {
            d2[i][j][0] = d2[i][j - 1][0] + m2[i][j];
            d2[i][j][1] = d2[i][j - 1][1] + m5[i][j];
            able[i][j] = true;
          }
        }
      }
    }
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (i == 1 && j == 1) {
        d5[i][j][0] = m2[i][j];
        d5[i][j][1] = m5[i][j];
      } else if (arr[i][j] == 0 ||
                 (able[i][j - 1] == 0 && able[i - 1][j] == 0)) {
        continue;
      } else if (able[i][j - 1] == false) {
        d5[i][j][0] = d5[i - 1][j][0] + m2[i][j];
        d5[i][j][1] = d5[i - 1][j][1] + m5[i][j];
        able[i][j] = true;
      } else if (able[i - 1][j] == false) {
        d5[i][j][0] = d5[i][j - 1][0] + m2[i][j];
        d5[i][j][1] = d5[i][j - 1][1] + m5[i][j];
        able[i][j] = true;
      } else if (able[i - 1][j] == true && able[i][j - 1] == true) {
        if (d5[i - 1][j][1] < d5[i][j - 1][1]) {
          d5[i][j][0] = d5[i - 1][j][0] + m2[i][j];
          d5[i][j][1] = d5[i - 1][j][1] + m5[i][j];
        } else if (d5[i - 1][j][1] > d5[i][j - 1][1]) {
          d5[i][j][0] = d5[i][j - 1][0] + m2[i][j];
          d5[i][j][1] = d5[i][j - 1][1] + m5[i][j];
        } else {
          if (d5[i - 1][j][0] < d5[i][j - 1][0]) {
            d5[i][j][0] = d5[i - 1][j][0] + m2[i][j];
            d5[i][j][1] = d5[i - 1][j][1] + m5[i][j];
          } else {
            d5[i][j][0] = d5[i][j - 1][0] + m2[i][j];
            d5[i][j][1] = d5[i][j - 1][1] + m5[i][j];
          }
        }
      }
    }
  }
  if ((min(min(d2[n][n][0], d2[n][n][1]), min(d5[n][n][0], d5[n][n][1])) <=
       0) ||
      (f0 == false)) {
    if (min(d2[n][n][0], d2[n][n][1]) < min(d5[n][n][0], d5[n][n][1])) {
      td2(n, n);
      printf("%d\n", min(d2[n][n][0], d2[n][n][1]));
    } else {
      td5(n, n);
      printf("%d\n", min(d5[n][n][0], d5[n][n][1]));
    }
  } else {
    printf("1\n");
    int cx = 1, cy = 1;
    while (cx < fx) {
      printf("D");
      cx++;
    }
    while (cy < fy) {
      printf("R");
      cy++;
    }
    while (cx < n) {
      printf("D");
      cx++;
    }
    while (cy < n) {
      printf("R");
      cy++;
    }
    return 0;
  }
  printf("%s", str + 3);
  return 0;
}
