exercise 16-1: write a self-reproducing program