TASK #18 、TASK #16 合入代码