Energy released on oxidation depends on how reduced a fuel molecule is -- more C-H bonds and fewer oxygen-bearing groups mean more energy released per gram.
Starch and glycogen are both glucose polymers with the same partially oxidized carbon backbone, and protein's energy yield is limited by its nitrogen content, which must be removed before the remaining carbon skeleton is oxidized.
Fat's long hydrocarbon chains are far more reduced than any of these, so it yields the most energy per gram on oxidation.
Comparing the approximate energy values per gram for each macronutrient class settles this directly.
Only fat's per-gram caloric value stands well above the other three options.
So, the correct answer is fat.