class program { define turnright() { iterate(3) turnleft(); } define halfturn() { turnleft(); turnleft(); } define izq1() { if(frontIsClear) { move(); while(leftIsClear) { turnleft(); move(); } mov1(); } else { turnright(); izq1(); } } define mov1() { if(nextToABeeper) { pickbeeper(); if(notNextToABeeper) { putbeeper(); izq1(); } } else { putbeeper(); izq1(); } } define pared() { turnright(); while(frontIsClear) move(); if( notNextToABeeper ) ini(); halfturn(); while(frontIsClear) move(); turnright(); } define izq2() { if(frontIsClear) { move(); while(leftIsClear) { turnleft(); move(); } mov2(); } else { turnright(); mov2(); } } define mov2() { pared(); izq2(); } define ini() { while(leftIsClear) turnleft(); while(frontIsClear || notFacingWest) { if(frontIsBlocked) turnright(); else move(); } turnoff(); } program() { while(leftIsClear) turnleft(); putbeeper(); putbeeper(); izq1(); mov2(); turnoff(); } }