class program { define halfturn() { turnleft(); turnleft(); } define turnright() { iterate( 3 ) turnleft(); } define backmove() { halfturn(); move(); } define rightmove() { turnright(); move(); } define subeBeeper() { pickbeeper(); move(); putbeeper(); backmove(); } define inicializa() { while( nextToABeeper ) { turnleft(); subeBeeper(); turnleft(); move(); } halfturn(); } define regresa() { rightmove(); turnright(); while( nextToABeeper ) move(); rightmove(); turnright(); } define checaMMB() { while( notNextToABeeper ) move(); if( frontIsBlocked ) turnoff(); move(); while( notNextToABeeper && frontIsClear ) move(); if( notNextToABeeper ) { halfturn(); while( notNextToABeeper ) move(); turnoff(); } regresa(); restaUnoAMontones(); } define restaUnoAMontones() { while( frontIsClear ) { if( nextToABeeper ) { turnright(); subeBeeper(); turnright(); } move(); } if( nextToABeeper ) { turnright(); subeBeeper(); turnright(); } regresa(); checaMMB(); } program() { inicializa(); checaMMB(); turnoff(); } }