#include<bits/stdc++.h>
using namespace std;
int main() {
// No input is there, source 0, cells are 1-30
int targets [32];
for ( int i = 0; i <= 30; i++ )targets [ i ] = i;
targets[2] = 21;
targets[4] = 7;
targets[10] = 25;
targets[19] = 28;
// Snakes
targets[26] = 0;
targets[20] = 8;
targets[16] = 3;
targets[18] = 6;
//Use BFS to find the minimum moves
//While traversing go for moves and skip the snakes cells.
vector < bool > vis (32, false);
queue < pair < int, int > > qu;
qu.push({0, 0});
vis [ 0 ] = true;
while(!qu.empty()){
auto cur = qu.front();
qu.pop();
for ( int move = 1; move <= 6; move++ ){
int nextPos = cur.first + move;
if (nextPos > 30 || vis [ nextPos] )continue;
if (targets [ nextPos] > nextPos ) {
nextPos = targets [ nextPos ];
}
if (nextPos == 30 ){
cout<<cur.second+1<<"\n";
return 0;
}
vis [ nextPos ] = true;
qu.push({nextPos, cur.second + 1});
}
}
cout<<"No path found!";
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJLy8gTm8gaW5wdXQgaXMgdGhlcmUsIHNvdXJjZSAwLCBjZWxscyBhcmUgMS0zMAoJaW50IHRhcmdldHMgWzMyXTsKCWZvciAoIGludCBpID0gMDsgaSA8PSAzMDsgaSsrICApdGFyZ2V0cyBbIGkgXSA9IGk7CgkKCXRhcmdldHNbMl0gPSAyMTsKICAgIHRhcmdldHNbNF0gPSA3OwogICAgdGFyZ2V0c1sxMF0gPSAyNTsKICAgIHRhcmdldHNbMTldID0gMjg7CiAgICAvLyBTbmFrZXMKICAgIHRhcmdldHNbMjZdID0gMDsKICAgIHRhcmdldHNbMjBdID0gODsKICAgIHRhcmdldHNbMTZdID0gMzsKICAgIHRhcmdldHNbMThdID0gNjsKCQoJCgkvL1VzZSBCRlMgdG8gZmluZCB0aGUgbWluaW11bSBtb3ZlcwoJLy9XaGlsZSB0cmF2ZXJzaW5nIGdvIGZvciBtb3ZlcyBhbmQgc2tpcCB0aGUgc25ha2VzIGNlbGxzLgoJdmVjdG9yIDwgYm9vbCA+IHZpcyAoMzIsIGZhbHNlKTsKCXF1ZXVlIDwgcGFpciA8IGludCwgaW50ID4gPiBxdTsKCXF1LnB1c2goezAsIDB9KTsKCXZpcyBbIDAgXSA9IHRydWU7CgkKCXdoaWxlKCFxdS5lbXB0eSgpKXsKCQlhdXRvIGN1ciA9IHF1LmZyb250KCk7CgkJcXUucG9wKCk7CgkJCgkJZm9yICggaW50IG1vdmUgPSAxOyBtb3ZlIDw9IDY7IG1vdmUrKyApewoJCQlpbnQgbmV4dFBvcyA9IGN1ci5maXJzdCArIG1vdmU7CgkJCWlmIChuZXh0UG9zID4gMzAgfHwgdmlzIFsgbmV4dFBvc10gKWNvbnRpbnVlOwoJCQlpZiAodGFyZ2V0cyBbIG5leHRQb3NdID4gbmV4dFBvcyApIHsKCQkJCW5leHRQb3MgPSB0YXJnZXRzIFsgbmV4dFBvcyBdOwoJCQl9CgkJCWlmIChuZXh0UG9zID09IDMwICl7CgkJCQljb3V0PDxjdXIuc2Vjb25kKzE8PCJcbiI7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCQl2aXMgWyBuZXh0UG9zIF0gPSB0cnVlOwoJCQlxdS5wdXNoKHtuZXh0UG9zLCBjdXIuc2Vjb25kICsgMX0pOwoJCX0KCX0KCQoJY291dDw8Ik5vIHBhdGggZm91bmQhIjsKCXJldHVybiAwOwp9