module adder_16bit (
    input wire [15:0] a,
    input wire [15:0] b,
    input wire Cin,
    output wire [15:0] y,
    output wire Co
);

    // Wires for the carry between lower and upper 8-bit adders
    wire carry;

    // Instantiate the 8-bit adders
    adder_8bit lower_adder (
        .a(a[7:0]),
        .b(b[7:0]),
        .cin(Cin),
        .sum(y[7:0]),
        .cout(carry) // Carry from lower 8 bits
    );

    adder_8bit upper_adder (
        .a(a[15:8]),
        .b(b[15:8]),
        .cin(carry), // Carry from lower 8 bits
        .sum(y[15:8]),
        .cout(Co) // Carry out from the entire 16-bit adder
    );

endmodule