hw1,hw2,hw3 updated final version