implement HalfAdder