task 2.29 a-b
task 2.29: fix bugs about list