# a,b = map(int, input().split()) # print(a, b) # num = [1, 2, 3, 4, 5] # print(*num) # s = input() # print(s) # while (len(s) != 0 and len(s) != 1): # s = s[1:-1] # print(s) # a, b = map(int, input().split()) # cnt = 0 # x = 0 # while a > 0: # cnt += 1 # a -= 1 # x += 1 # if (x == b): # x = 0 # a += 1 # print(cnt) # a = int(input()) # st = 1 # if a == 1: # print('0') # else: # while 2**st <= a: # if 2**st == a: # print(st) # break # st += 1 # if 2**st > a: # print('НЕТ') # n = int(input()) # while n < 1000000000: # st = str(n) # n = int(st[0])*n # if int(st[0]) == 1: # break # print(n) # sum = 0 # while (n := int(input())) != 0: # sum += n # print(sum) # s = input() # while 5 <= len(s) <= 9: # last = s # s = input() # print(last) # n = int(input()) # x = int(input()) # if x > n: # print(0) # print('Довольно') # else: # sum = x # while sum <= n: # x = input() # sum += x # print(sum - x) # print('Довольно') # n, k = map(int, input().split()) # time = 0 # cnt = 0 # while time <= (240 - k) and cnt <= n: # cnt += 1 # time += cnt*5 # print(cnt - 1) # n = int(input()) # l = 0 # k = 0 # s = 1 # while k < n: # s = 1 + l # k = k + s # l += 1 # if (k > n): # print(l - 1) # else: # print(l) # a = int(input()) # b = int(input()) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # НОД # a = int(input()) # b = int(input()) # while b > 0: # c = a%b # a = b # b = c # print(f'НОД = {a}') #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # НОД # a = int(input()) # b = int(input()) # while a != b: # if a > b: # a = a - b # else: # b = b - a # print(f'НОД = {a}') # a = int(input()) # b = int(input()) # while b > 0: # c = a%b # a = b # b = c # print(f'НОД = {a}') #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Сортировка массива пузырьком # buf = [5, 7, 3, 1, 6, 4, 8, 1, 9] # cnt = 0 # for run in range(len(buf) - 1): # for i in range(len(buf) - run - 1): # if buf[i] > buf[i + 1]: # cnt += 1 # buf[i], buf[i + 1] = buf[i + 1], buf[i] # print(*buf) # print(cnt) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Система уравнений # n, m = map(int, input().split()) # cnt = 0 # for b in range(0, n + 1 ): # for a in range(0, m + 1): # if (a**2 + b) == n and (a + b**2) == m: # cnt += 1 # print(cnt) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Сортировка вставками # buf = [5, 7, 3, 1, 6, 4, 8, 1, 9] # buf = [5, 4, 2, 15, 6, 6] # cnt = 0 # for run in range(1, len(buf)): # for i in range(run, 0, -1): # if buf[i] < buf[i - 1]: # cnt += 1 # buf[i], buf[i - 1] = buf[i - 1], buf[i] # else: # break # print(*buf) # print(cnt) # def foo(len): # if len < 0: # sign = -2 # else: # sign = 2 # return [i for i in range(0, len, sign)] # print(foo(-10)) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # n, m = map(int, input().split()) # # l = [] # n, m = 3, 3 # l = [[6, 2, 7], [1, 2, 8], [1, 3, 8]] # maxi = [] # summ = [] # # for i in range(n): # # l.append(list(map(int, input().split()))) # for i in range(n): # maxi.append(max(l[i])) # summ.append(sum(l[i])) # maximum = max(maxi) # foo_cnt = maxi.count(maximum) # if foo_cnt == 1: # print(max.index(maximum)) # else: # for i in range(n): # if maxi[i] != maximum: # summ[i] = 0 # sum_max = max(summ) # print(summ.index(sum_max)) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # n, m = map(int, input().split()) # l = [] # maxi = [] # for i in range(n): # l.append(list(map(int, input().split()))) # for i in range(n): # maxi.append(max(l[i])) # maximum = max(maxi) # print(maxi.count(maximum)) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # l = [['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W']] # flag = 'Yes' # # for i in range(4): # # l.append(list(input())) # for i in range(4): # for j in range(4): # l[i][j] = ord(l[i][j])%10 - 6 # for i in [0, 1, 2]: # for j in [0, 1, 2]: # if l[i][j] == l[i][j + 1] == l[i + 1][j] == l[i + 1][j + 1]: # flag = 'No' # print(flag) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # n, m = map(int, input().split()) # # l1 = [] # # l2 = [] # l1 = [['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W']] # l2 = [['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W'], ['B', 'W', 'B', 'W']] # # for i in range(n): # # l1.append(list(input())) # # input() # # for i in range(n): # # l2.append(list(input())) # cnt = 0 # for i in range(n): # for j in range(m): # if l1[i][j] == l2[i][j]: # cnt += 1 # print(cnt) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # n, x = map(int, input().split()) # cnt = 0 # for i in range(1, n + 1): # for j in range(1, n + 1): # if i*j == x: # cnt += 1 # print(cnt) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # n = int(input()) # l = [] # maxi = [] # for i in range(n): # l.append(list(map(int, input().split()))) # for i in range(n): # maxi.append(l[i][n - i - 1]) # print(max(maxi)) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ n = int(input()) a, b, c = map(int, input().split()) l = [] for i in range(n): l.append([0]*n) diag = 0 for i in range(n): for j in range(n): if i == j: l[i][j] = c elif j < diag: l[i][j] = b else : l[i][j] = a diag += 1 for i in range(n): print(*l[i])