This version is edited by myself and I think it is complete the homework