#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    printf("行　列→");
    int a,b;
    int **mat;
    scanf("%d %d",&a,&b);

    mat=(int**)malloc(sizeof(int*)*a); //空の配列を作った。それにさらにint形で容量を確保するからアスタリスク２個
    for(int i=0;i<b;i++)
    {
        mat[i]=(int*)malloc(sizeof(int)*b);
    }
    int k=1;
    for(int i=0;i<a;i++)
    {
        for(int j=0;j<b;j++)
        {
            mat[i][j]=k++;
            printf("%d ",mat[i][j]);
        }
        printf("\n");
    }
    free(mat);
    return 0;
}