def Divisors(N): N=abs(N) L,U=[],[] k=1 while k*k <=N: if N%k== 0: L.append(k) if k*k!=N: U.append(N//k) k+=1 return L+U[::-1] #================================================== def solve(N,H): if H&(-H)!=H: X=solve(N,N//H) X=[list(x) for x in zip(*X)][::-1] return X X=[[0]*(N//H) for _ in range(H)] D=Divisors(N)[-2::-1] i=j=0 for d in D: if d%(N//H)==0: for _ in range(d//(N//H)): for k in range(N//H): X[i][k]=d i+=1 else: for _ in range(d): X[i][j]=d j+=1 if j==N//H: i+=1; j=0 return X #================================================== N,H=map(int,input().split()) for x in solve(N,H): print(*x)