#include <iostream>
#include <random>
using namespace std;
int main()
{
default_random_engine generator;
uniform_int_distribution<int> distribution(0,5);
int repeat = 3;
int tot = 0;
for(int itr = 0; itr<repeat; itr++)
{
int dice[5] = {0,0,0,0,0};
//first roll all the dice
for(int i = 0; i<5; i++)
{
dice[i] = distribution(generator);
}
//retry until all dice have the same outcome
bool done = false;
int totRolls = 1;//assuming fisrt roll counts..
while(!done)
{
//decide the most occurring outcome
int cnt[6] = {0,0,0,0,0,0};
int maxCnt = 0;
for(int i = 0; i<5; i++)
{
cnt[dice[i]]++;
if(cnt[dice[i]] > cnt[maxCnt])
{
maxCnt = dice[i];
}
if(cnt[dice[i]] >= 5)
{
done = true;
break;
}
}
if(done)break;
//now roll all the dice that have
//different value than that..
for(int i = 0; i<5; i++)
{
if(dice[i] != maxCnt)dice[i] = distribution(generator);
}
totRolls++;
/*
//print all dice values
for(int i = 0; i<5; i++)
{
cout<<dice[i]+1<<" ";
}
cout<<endl;
*/
}
// cout<<totRolls<<endl;
tot+= totRolls;
}
cout<<tot/repeat<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CgkJZGVmYXVsdF9yYW5kb21fZW5naW5lIGdlbmVyYXRvcjsKICAgIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+IGRpc3RyaWJ1dGlvbigwLDUpOwoJaW50IHJlcGVhdCA9IDM7CglpbnQgdG90ID0gMDsKCWZvcihpbnQgaXRyID0gMDsgaXRyPHJlcGVhdDsgaXRyKyspCgl7CiAgICBpbnQgZGljZVs1XSA9IHswLDAsMCwwLDB9OwoKICAgIC8vZmlyc3Qgcm9sbCBhbGwgdGhlIGRpY2UKICAgIGZvcihpbnQgaSA9IDA7IGk8NTsgaSsrKQogICAgewogICAgICAgIGRpY2VbaV0gPSBkaXN0cmlidXRpb24oZ2VuZXJhdG9yKTsKICAgIH0KCiAgICAvL3JldHJ5IHVudGlsIGFsbCBkaWNlIGhhdmUgdGhlIHNhbWUgb3V0Y29tZQogICAgYm9vbCBkb25lID0gZmFsc2U7CiAgICBpbnQgdG90Um9sbHMgPSAxOy8vYXNzdW1pbmcgZmlzcnQgcm9sbCBjb3VudHMuLgogICAgd2hpbGUoIWRvbmUpCiAgICB7CgogICAgICAgIC8vZGVjaWRlIHRoZSBtb3N0IG9jY3VycmluZyBvdXRjb21lCiAgICAgICAgaW50IGNudFs2XSA9IHswLDAsMCwwLDAsMH07CiAgICAgICAgaW50IG1heENudCA9IDA7CiAgICAgICAgZm9yKGludCBpID0gMDsgaTw1OyBpKyspCiAgICAgICAgewogICAgICAgICAgICBjbnRbZGljZVtpXV0rKzsKICAgICAgICAgICAgaWYoY250W2RpY2VbaV1dID4gY250W21heENudF0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1heENudCA9IGRpY2VbaV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoY250W2RpY2VbaV1dID49IDUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKGRvbmUpYnJlYWs7CiAgICAgICAgLy9ub3cgcm9sbCBhbGwgdGhlIGRpY2UgdGhhdCBoYXZlCiAgICAgICAgLy9kaWZmZXJlbnQgdmFsdWUgdGhhbiB0aGF0Li4KICAgICAgICBmb3IoaW50IGkgPSAwOyBpPDU7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRpY2VbaV0gIT0gbWF4Q250KWRpY2VbaV0gPSBkaXN0cmlidXRpb24oZ2VuZXJhdG9yKTsKICAgICAgICB9CgogICAgICAgIHRvdFJvbGxzKys7CgovKgogICAgICAgIC8vcHJpbnQgYWxsIGRpY2UgdmFsdWVzCiAgICAgICAgZm9yKGludCBpID0gMDsgaTw1OyBpKyspCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDxkaWNlW2ldKzE8PCIgIjsKICAgICAgICB9CiAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAqLwogICAgfQogICAvLyBjb3V0PDx0b3RSb2xsczw8ZW5kbDsKICAgdG90Kz0gdG90Um9sbHM7Cgl9CiAgICBjb3V0PDx0b3QvcmVwZWF0PDxlbmRsOwogICAgcmV0dXJuIDA7Cn0K