#include <bits/stdc++.h>
using namespace std;
int a[12][12];
double D[12][12];
pair<int, int> get_nxt(int i, int j, int v) {
  if (i % 2 == 0) {
    if (j - v >= 0)
      return {i, j - v};
    else {
      if (i == 0) return {0, 0};
      return {i - 1, v - j - 1};
    }
  } else {
    if (j + v <= 9)
      return {i, j + v};
    else
      return {i - 1, 19 - j - v};
  }
}
int main() {
  int i, j, n = 10;
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) scanf("%d", &a[i][j]);
  for (i = 1; i < 6; i++) {
    double p = (double)(6 - i) / 6;
    double q = 0;
    for (j = 1; j <= i; j++) {
      q += (D[0][i - j] + 1) / 6;
    }
    D[0][i] = (p + q) / (1 - p);
  }
  for (i = 0; i < n; i++) {
    int dir = i % 2, st = dir ? n - 1 : 0;
    for (int j = st; dir ? (j >= 0) : (j < n); dir ? (j--) : (j++)) {
      if (i == 0 && j < 6) continue;
      double mn = 1e9;
      for (int k = 1; k <= 6; k++) {
        auto tt = get_nxt(i, j, k);
        int x = tt.first, y = tt.second;
        D[i][j] += (min(D[x][y], D[x - a[x][y]][y]) + 1) / 6;
      }
    }
  }
  printf("%.10lf\n", D[9][0]);
  return 0;
}
