class program { define halfturn() { turnleft(); turnleft(); } define turnright() { iterate(3) turnleft(); } define backmove() { halfturn(); move(); } define retiraBeeper() { pickbeeper(); move(); putbeeper(); backmove(); } define retornaBeeper() { move(); pickbeeper(); backmove(); putbeeper(); } define restaBeepers() { if( nextToABeeper ) { retiraBeeper(); turnleft(); move(); turnleft(); if( nextToABeeper ) { retiraBeeper(); turnright(); move(); turnright(); } else { turnleft(); move(); turnright(); retornaBeeper(); } } else halfturn(); } define regresaMonton() { move(); halfturn(); while( nextToABeeper ) { retiraBeeper(); halfturn(); } } define eliminaBeepers() { move(); while( nextToABeeper ) pickbeeper(); backmove(); } define finaliza() { move(); turnleft(); move(); turnleft(); while( nextToABeeper ) { pickbeeper(); move(); turnright(); move(); putbeeper(); halfturn(); move(); turnleft(); move(); halfturn(); } } define mcbd() { while( facingNorth ) { restaBeepers(); if( notFacingNorth ) { if( nextToABeeper ) { halfturn(); eliminaBeepers(); turnleft(); move(); turnleft(); regresaMonton(); move(); turnright(); move(); turnright(); } else { turnleft(); move(); turnleft(); if( nextToABeeper ) { eliminaBeepers(); turnright(); move(); turnright(); regresaMonton(); move(); halfturn(); } else finaliza(); } } } } program() { turnright(); move(); turnleft(); mcbd(); turnoff(); } }