module adder_16bit(
    input [15:0] a,
    input [15:0] b,
    input Cin,
    output [15:0] y,
    output Co
);
    wire cout_first; // Carry out from the first 8-bit adder

    // First 8-bit adder
    adder_8bit adder_lower(
        .a(a[7:0]),
        .b(b[7:0]),
        .cin(Cin),
        .sum(y[7:0]),
        .cout(cout_first)
    );

    // Second 8-bit adder
    adder_8bit adder_upper(
        .a(a[15:8]),
        .b(b[15:8]),
        .cin(cout_first),
        .sum(y[15:8]),
        .cout(Co)
    );

endmodule