import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); // 定义二维数组。 int[][] array = new int[n][]; for (int i = 0; i < n; i++) { // 为最高维分配引用空间。 array[i] = new int[i + 1]; // 每行的端点数为1,一个数也为1。 array[i][0] = array[i][array[i].length - 1] = 1; if (i > 1) { for (int j = 1; j < i; j++) { // 每个数等于它左上方和上方两数之和。 array[i][j] = array[i - 1][j - 1] + array[i - 1][j]; } } } // 输出:打印数组内容 System.out.print(printArr(array, n)); } /** * @param arr * @param row * @return */ public static String printArr(int[][] arr, int row) { // 字符串容器 StringBuilder sb = new StringBuilder(); for (int i = 0; i < row; i++) { for (int j = 0; j <= i; j++) { // 字符串拼接,域宽为5。 sb.append(String.format("%5d", arr[i][j])); } // 换行 sb.append("\n"); } // 转字符串类型 return sb.toString(); } }