A easy, warm up; B consider special case; C overtime, TODO