Solution of #28.