#include <stdio.h> int result[30][30]={0}; void pr(int n, int m); int Add1(int i, int j); int Add2(int i, int j); int Add3(int i, int j); int F(int i, int j); void one(int n); void two(int n); void three(int n); int main(void) { int n, m; scanf("%d %d", &n, &m); switch(m) { case 1: one(n); break; case 2: two(n); break; case 3: three(n); break; } pr(n, m); return 0; } void pr(int n, int m) { int i, j; for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(result[i][j]==0 && m!=2) break; else if(result[i][j]==0 && m==2) printf(" "); else printf("%d ", result[i][j]); } printf("\n"); } } int F(int i, int j) { if(i<0 || i>30 || j<0 || j>30) return 0; else return result[i][j]; } int Add1(int i, int j) { return F(i-1, j-1) + F(i-1, j); } void one(int n) { int i, j; result[0][0]=1; for(i=1; i<n; i++) { for(j=0; j<=i; j++) { result[i][j]=Add1(i, j); } } } int Add2(int i, int j) { return F(i+1, j+1) + F(i+1, j); } void two(int n) { int i, j; result[n-1][n-1]=1; for(i=n-2; i>=0; i--) { for(j=n-1; j>=i; j--) { result[i][j]=Add2(i, j); } } } int Add3(int i, int j) { return F(i, j+1) + F(i+1, j+1); } void three(int n) { int i, j; result[n-1][n-1]=1; for(j=n-2; j>=0; j--) { for(i=n-1; i>=j; i--) { result[i][j]=Add3(i, j); } } }