exercises 2.21-2.23 sicp