Where do you get fly in Pokemon Heart Gold?

You have to defeat Chuck, the gym leader of Cianwood City. His wife gives it to you upon exit.