generic programming algorithms and data structures 7865964