task3: reusable mul