A branch turns a rule into a choice. State the boundary before you write the comparison: at least includes equality, while greater than excludes it. A loop then applies that rule across a list. Returning leaves the entire function; break leaves the loop; continue skips only the current iteration. Mixing them up can produce a result that looks right until a rejected row appears near the start. You will build small scans for route readings and service tiers, keeping the original row order. Check a boundary value and an empty list by hand. Those inputs reveal control-flow mistakes that a long ordinary list can conceal.