The mapping class group of a punctured surface is generated by three elements