add half-adder and full-adder