module mux16to1(sel, d, z)

input[3:0] sel;
input[15:0] d;
output z;

wire q;
wire[3:0] q1;
wire[3:0] sel;
wire[15:0] d;

	mux4to1 mux0(sel[1:0], d[3:0], q1[0]);
	mux4to1 mux1(sel[1:0], d[7:4], q1[1]);
	mux4to1 mux2(sel[1:0], d[11:8], q1[2]);
	mux4to1 mux3(sel[1:0], d[15:12], q1[3]);
	mux4to1 muxout(sel[3:2], q1, q);

	assign z = q;

endmodule