implement multiply-except-self