#include <iostream>
#include <iomanip>
#include <random>

using namespace std;

class Rand
{
public:
    Rand(bool rand_seed = true, int value = 0)
    {
        if(rand_seed) u.seed(std::random_device()());
        else          u.seed(value);
    }
    int operator()(int from, int to)
    {
        return d(u,std::uniform_int_distribution<>::param_type{from,to});
    }
private:
    std::default_random_engine u;
    std::uniform_int_distribution<> d;
} r;

int counts()
{
    int s_1[2] = {2,3};
    int s_2[4] = {1,3,6,4};
    int s_3[4] = {1,2,6,5};
    int s_4[3] = {2,6,5};
    int s_5[3] = {3,6,4};

    int cnt = 0, s = 1;
    for(;s != 6; ++cnt)
    {
        switch(s)
        {
        case 1: s = s_1[r(0,1)]; break;
        case 2: s = s_2[r(0,3)]; break;
        case 3: s = s_3[r(0,3)]; break;
        case 4: s = s_4[r(0,2)]; break;
        case 5: s = s_5[r(0,2)]; break;
        }
    }
    return cnt;
}

int main()
{
    int tot = 0, ok = 0;
    for(; tot < 10000000;)
    {
        ++tot;
        ok += counts();
    }
    cout << double(ok)/tot << "\n";
}
