#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";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHJhbmRvbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBSYW5kCnsKcHVibGljOgogICAgUmFuZChib29sIHJhbmRfc2VlZCA9IHRydWUsIGludCB2YWx1ZSA9IDApCiAgICB7CiAgICAgICAgaWYocmFuZF9zZWVkKSB1LnNlZWQoc3RkOjpyYW5kb21fZGV2aWNlKCkoKSk7CiAgICAgICAgZWxzZSAgICAgICAgICB1LnNlZWQodmFsdWUpOwogICAgfQogICAgaW50IG9wZXJhdG9yKCkoaW50IGZyb20sIGludCB0bykKICAgIHsKICAgICAgICByZXR1cm4gZCh1LHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD46OnBhcmFtX3R5cGV7ZnJvbSx0b30pOwogICAgfQpwcml2YXRlOgogICAgc3RkOjpkZWZhdWx0X3JhbmRvbV9lbmdpbmUgdTsKICAgIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPD4gZDsKfSByOwoKaW50IGNvdW50cygpCnsKICAgIGludCBzXzFbMl0gPSB7MiwzfTsKICAgIGludCBzXzJbNF0gPSB7MSwzLDYsNH07CiAgICBpbnQgc18zWzRdID0gezEsMiw2LDV9OwogICAgaW50IHNfNFszXSA9IHsyLDYsNX07CiAgICBpbnQgc181WzNdID0gezMsNiw0fTsKCiAgICBpbnQgY250ID0gMCwgcyA9IDE7CiAgICBmb3IoO3MgIT0gNjsgKytjbnQpCiAgICB7CiAgICAgICAgc3dpdGNoKHMpCiAgICAgICAgewogICAgICAgIGNhc2UgMTogcyA9IHNfMVtyKDAsMSldOyBicmVhazsKICAgICAgICBjYXNlIDI6IHMgPSBzXzJbcigwLDMpXTsgYnJlYWs7CiAgICAgICAgY2FzZSAzOiBzID0gc18zW3IoMCwzKV07IGJyZWFrOwogICAgICAgIGNhc2UgNDogcyA9IHNfNFtyKDAsMildOyBicmVhazsKICAgICAgICBjYXNlIDU6IHMgPSBzXzVbcigwLDIpXTsgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGNudDsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdG90ID0gMCwgb2sgPSAwOwogICAgZm9yKDsgdG90IDwgMTAwMDAwMDA7KQogICAgewogICAgICAgICsrdG90OwogICAgICAgIG9rICs9IGNvdW50cygpOwogICAgfQogICAgY291dCA8PCBkb3VibGUob2spL3RvdCA8PCAiXG4iOwp9Cg==