module top;
    genvar i;
    generate

        initial #1;

        `define PRINT(X, offset) \
        for (i = 4; i <= 8; i = i + 1) \
            initial begin \
                $display(`"Module``X got %0d`", i ** 2 + offset); \
                $display("ModuleN got %0d", i ** 2 + offset); \
            end

        `PRINT(A, 0)
        `PRINT(A, 1)
        `PRINT(A, 2)

        `PRINT(B, 1)
        `PRINT(B, 1)

        `PRINT(C, 2)
        `PRINT(C, 2)

    endgenerate
endmodule