module adder_1(input a,b,cin,output cout,sum);
xor x1(sum,a,b,cin);
assign cout = (a&b)|(a&cin)|(b&cin);
endmodule
module sub_4(input [3:0]a,b,output cout,output [3:0]sum);
wire c1,c2,c3;
adder_1 ad1(.a(a[0]),.b(~b[0]),.cin(1'b1),.cout(c1),.sum(sum[0]));
adder_1 ad2(.a(a[1]),.b(~b[1]),.cin(c1),.cout(c2),.sum(sum[1]));
adder_1 ad3(.a(a[2]),.b(~b[2]),.cin(c2),.cout(c3),.sum(sum[2]));
adder_1 ad4(.a(a[3]),.b(~b[3]),.cin(c3),.cout(cout),.sum(sum[3]));
endmodule
module sub4_2c(input [3:0]a,b,output [3:0]diff,output bout);
wire cout;
sub_4 s1(.a(a),.b(b),.sum(diff),.cout(cout));
not n1(bout,cout);
endmodule