#include <bits/stdc++.h>
using namespace std;
template <class T1, class T2>
void pr(const pair<T1, T2>& x);
template <class T, size_t SZ>
void pr(const array<T, SZ>& x);
template <class T>
void pr(const vector<T>& x);
template <class T>
void pr(const set<T>& x);
template <class T1, class T2>
void pr(const map<T1, T2>& x);
template <class T>
void pr(const T& x) {
  cout << x;
}
template <class Arg, class... Args>
void pr(const Arg& first, const Args&... rest) {
  pr(first);
  pr(rest...);
}
template <class T1, class T2>
void pr(const pair<T1, T2>& x) {
  pr("{", x.first, ", ", x.second, "}");
}
template <class T>
void prContain(const T& x) {
  pr("{");
  bool fst = 1;
  for (auto& a : x) pr(!fst ? ", " : "", a), fst = 0;
  pr("}");
}
template <class T, size_t SZ>
void pr(const array<T, SZ>& x) {
  prContain(x);
}
template <class T>
void pr(const vector<T>& x) {
  prContain(x);
}
template <class T>
void pr(const set<T>& x) {
  prContain(x);
}
template <class T1, class T2>
void pr(const map<T1, T2>& x) {
  prContain(x);
}
void ps() { pr("\n"); }
template <class Arg, class... Args>
void ps(const Arg& first, const Args&... rest) {
  pr(first, " ");
  ps(rest...);
}
template <typename T>
int remin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
int remax(T& a, const T& b) {
  if (b > a) {
    a = b;
    return true;
  }
  return false;
}
int N, M;
vector<double> dp(110);
int m[110];
vector<int> v;
int go(int k) {
  if (m[k]) return m[k];
  return k;
}
int main(int argc, const char** argv) {
  for (int r = 9; r >= 0; --r) {
    for (int c = 0; c < 10; ++c) {
      int k;
      scanf("%d", &k);
      if (k) {
        int t = 10 * r + ((r & 1) ? 9 - c : c);
        if (r & 1) {
          m[t] = t + 2 * (k / 2) * 10 + (k & 1) * (2 * c + 1);
        } else {
          m[t] = t + 2 * (k / 2) * 10 + (k & 1) * ((9 - c) * 2 + 1);
        }
      }
    }
  }
  for (int i = 98; i > 93; --i) {
    dp[i] = 1;
    for (int d = 1; d <= 6; ++d) {
      if (go(i + d) == 99)
        dp[i] += ((double)1 / 6) * min(dp[i + d], dp[go(i + d)]);
      else
        dp[i]++;
    }
  }
  for (int i = 93; i >= 0; --i) {
    dp[i] = 1;
    for (int d = 1; d <= 6; ++d) {
      dp[i] += ((double)1 / 6) * min(dp[i + d], dp[go(i + d)]);
    }
  }
  printf("%0.9f\n", dp[0]);
  return 0;
}
