It works! Passes harder tests too! But, non-recursive mark_component needs to be debugged.