homework3 by self