class program { define half-turn() { turnleft(); turnleft(); } define turnright() { iterate(3) { turnleft(); } } define count-k(k) { if (nextToABeeper) { pickbeeper(); count-k(succ(k)) } else { half-turn(); move(); move(); turnright(); iterate (k) { move(); } } } define count-h(h) { if (nextToABeeper) { pickbeeper(); count-h(succ(h)) } else { move(); count-k(0); turnright(); iterate (h) { move(); } half-turn(); move(); turnleft(); move(); } } define line(length) { iterate (length) { move(); putbeeper(); } } define draw-rectangle(n) { line(n); iterate (3) { turnleft(); line(n); line(n); } turnleft(); line(n); } define count-n(n) { if (nextToABeeper) { pickbeeper(); count-n(succ(n)) } else { move(); count-h(0); iterate (n) { move(); } turnleft(); draw-rectangle(n); } } program() { turnright(); count-n(0); turnoff(); } }