class program { define halfturn() { turnleft(); turnleft(); } define turnright() { iterate( 3 ) turnleft(); } define backmove() { halfturn(); move(); } define rightmove() { turnright(); move(); } define leftmove() { turnleft(); move(); } define comparaDosMontones() { if( nextToABeeper ) { pickbeeper(); move(); if( nextToABeeper ) { pickbeeper(); if( nextToABeeper ) { backmove(); halfturn(); comparaDosMontones(); } else { backmove(); halfturn(); } } else { backmove(); putbeeper(); halfturn(); } } } define regresaMontones() { while( anyBeepersInBeeperBag ) { putbeeper(); move(); putbeeper(); backmove(); halfturn(); } } define abreCamino() { while( nextToABeeper ) pickbeeper(); rightmove(); if( nextToABeeper ) { while( anyBeepersInBeeperBag ) putbeeper(); backmove(); rightmove(); } else { backmove(); move(); while( anyBeepersInBeeperBag ) putbeeper(); backmove(); leftmove(); } } define explora() { comparaDosMontones(); if( nextToABeeper ) { regresaMontones(); abreCamino(); } else { regresaMontones(); turnright(); explora(); } } program() { while( nextToABeeper ) { turnleft(); explora(); } turnoff(); } }