solution of #15.