alg: 18.5, 19.1-19.3