Problem: Levko loves tables that consist of n rows and n columns very much. He especially loves beautiful tables. A table is beautiful to Levko if the sum of elements in each row and column of the table equals k.

Unfortunately, he doesn't know any such table. Your task is to help him to find at least one of them. 

Input

The single line contains two integers, n and k (1 ≤ n ≤ 100, 1 ≤ k ≤ 1000).

Output

Print any beautiful table. Levko doesn't like too big numbers, so all elements of the table mustn't exceed 1000 in their absolute value.

If there are multiple suitable tables, you are allowed to print any of them.

Examples

Input

2 4


Output

1 3
3 1


Input

4 7


Output

2 1 0 4
4 0 2 1
1 3 3 0
0 3 2 2

Note

In the first sample the sum in the first row is 1 + 3 = 4, in the second row — 3 + 1 = 4, in the first column — 1 + 3 = 4 and in the second column — 3 + 1 = 4. There are other beautiful tables for this sample.

In the second sample the sum of elements in each row and each column equals 7. Besides, there are other tables that meet the statement requirements.

Solution (in PYTHON3):

Solution:
#!/usr/bin/env pypy
"""
Created on Mon Dec 14 13:18:46 2020

@author: yash
"""
"""
     _       _    ____  _                      ____                 
    | | __ _(_)  / ___|| |__  _ __ ___  ___   |  _ \ __ _ _ __ ___  
 _  | |/ _` | |  \___ \| '_ \| '__/ _ \/ _ \  | |_) / _` | '_ ` _ \ 
| |_| | (_| | |   ___) | | | | | |  __/  __/  |  _ < (_| | | | | | |
 \___/ \__,_|_|  |____/|_| |_|_|  \___|\___|  |_| \_\__,_|_| |_| |_|
                                                                    
                  
"""
"""

"""
"""
 
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████████░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░▌░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░◐◐◐█████████▀▀▀▀▀▀🔥░░░░░░░░███
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░░░░▌░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░░░░█▌░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄▄▀█████████████████████████████████████████████████
░░░░░░░░░░░░░░░░░░░░░░░░░░▄▄▄████▄████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████
░░░░░░░░░░░░░░░░░░░░░░░░░░░▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█████████▀▀▀▀▀▀▀▀▀
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░◐◐◐█████████▀▀▀▀▀▀🔥░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░████████░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░███████░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████░░░░░░░░░░░░░░░
"""
"""
 
 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@#@@#@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@M@M # #@@@M@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@#@@ @@@@@@M@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@### #@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@B@@#@@@@@#M@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@##@@M@#@@##@##@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#M@@@@@##@M@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##@@@@@@#@##@#@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#  @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@  #
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#@@#@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @# @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @# @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#@@#@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@  #
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#  @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@#@@#@@@@@@@@@@@@@@@@@#@@#@#@@@@@@@@@@@@@@@@@@@@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@
 @ #@@@@@@@@@@@@@@@@@@@@#@@@@@@#@@@@@@@@@@@@@@@@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ @@#@#@@@@@@@@@@@@@@@@@@#@####@@@@@@@@@@@@@@@@@M@#@@#@#@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@#@#M@@@M@@@@@@@@@@@@@@@@@@@M@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#@M@#@#@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@M@@M@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@#@@#@@@@@@@@@@@@@@@@@@@@M@M@#@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@
@@#@@#@@@@@@@@@@@@@@@@@@@@@@@M@                   @M@@#@@@@@@@@@@@@@@@@@@@@@@@@@
@#@@@@@#@@@@@@@@@@@@@@@@@@@#@@                     @@@@M@@@@@@@@@@@@@@@@@@@@@@@@
@@@#@@@##@@@#@@@@@#@@@@@##@@@@                     #@#@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@####@@####@@@@#@@@@M@@@#@@#                     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@#@          @#@@#@@@       #@             @       #@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                            @#           @@#@@     #@@#@@@@@@@@@@@@@@@@@@@@@@@@@
                     ##@#@@ #M           @# @@     @@M  @@@@@@@@@@@@@@@@@@@@@@@@
                     @#@@@M #@           #@   #    @@   @@@@@@@@@@@@@@@@@@@@@@@@
                      @@ @@#@@           ##    @##@@    @@@@@@@@@@@@@@@@@@@@@@@@
                      @#  @@M@           @@             @@@@@@@@@@@@@@@@@@@@@@@@
    @@@##@@@          @@@@ @@@          @@               #@#@@#@@@@@@@@@@@@@@@@@
@@@@###@@###@@@@#@#@@@@#@@@ M@          #@    @       B  @@@#@@@@@@@@@@@@@@@@@@@
@M@@@@@MM@@@@@M@@#@##@@@#@@M@B          @#   M@   @# #@  #@@#@@@@@@@@@@@@@@@@@@@
@#@#@@M@@M@@#@#@#@#@@#@#@#@@@@          @#   @@   #  @M  @#@@@@@@@@@@@@@@@@@@@@@
@@@          @@@@#@##@     #@#          @M    #  @   @   @@@@@#@@@@@@@@@@@@@@@@@
                            @@          @@   @#@@#@@#M   #@@@@#@@@@@@@@@@@@@@@@@
                           M@#           #@   @@@@##@@ @M@#M@@@#@@@@@@@@@@@@@@@@
                           @@@@           @@          @@@#@@@#@#@@@@@@@@@@@@@@@@
                          @#  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                          @@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   @M@H@@  @#        @#@@@@#@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@#@#@##@M@@@M@ @M#@@@@@#@@#@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#M@@@##@@@@@@@@M@@@@#@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@#@@@@@M@#@M@@B#M@@M@###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
###@@@@@@@@@# @#@@@@@@@#@@@#@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@#@@M@@@#@@#@#@@@@@@#@@@#@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@M@#@# 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@@@#
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@#@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M@@##
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@#@M
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@#@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#  #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#  #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 
"""
"""
                          / \  //\
            |\___/|      /   \//  \\
            /0  0  \__  /    //  | \ \    
           /     /  \/_/    //   |  \  \  
           @_^_@'/   \/_   //    |   \   \ 
           //_^_/     \/_ //     |    \    \
        ( //) |        \///      |     \     \
      ( / /) _|_ /   )  //       |      \     _\
    ( // /) '/,_ _ _/  ( ; -.    |    _ _\.-~        .-~~~^-.
  (( / / )) ,-{        _      `-.|.-~-.           .~         `.
 (( // / ))  '/\      /                 ~-. _ .-~      .-~^-.  \
 (( /// ))      `.   {            }                   /      \  \
  (( / ))     .----~-.\        \-'                 .~         \  `. \^-.
             ///.----..>        \             _ -~             `.  ^-`  ^-_
               ///-._ _ _ _ _ _ _}^ - - - - ~                     ~-- ,.-~
                                                                  /.-~
 
"""
"""
  ____          _      _____                       
 / ___|___   __| | ___|  ___|__  _ __ ___ ___  ___ 
| |   / _ \ / _` |/ _ \ |_ / _ \| '__/ __/ _ \/ __|
| |__| (_) | (_| |  __/  _| (_) | | | (_|  __/\__ \
 \____\___/ \__,_|\___|_|  \___/|_|  \___\___||___/
"""
"""
░░██▄░░░░░░░░░░░▄██
░▄▀░█▄░░░░░░░░▄█░░█░
░█░▄░█▄░░░░░░▄█░▄░█░
░█░██████████████▄█░
░█████▀▀████▀▀█████░
▄█▀█▀░░░████░░░▀▀███
██░░▀████▀▀████▀░░██
██░░░░█▀░░░░▀█░░░░██
███▄░░░░░░░░░░░░▄███
░▀███▄░░████░░▄███▀░
░░░▀██▄░▀██▀░▄██▀░░░
░░░░░░▀██████▀░░░░░░
░░░░░░░░░░░░░░░░░░░░
"""
"""░░██▄░░░░░░░░░░░▄██
░▄▀░█▄░░░░░░░░▄█░░█░
░█░▄░█▄░░░░░░▄█░▄░█░
░█░██████████████▄█░
░█████▀▀████▀▀█████░
▄█▀█▀░░░████░░░▀▀███
██░░▀████▀▀████▀░░██
██░░░░█▀░░░░▀█░░░░██
███▄░░░░░░░░░░░░▄███
░▀███▄░░████░░▄███▀░
░░░▀██▄░▀██▀░▄██▀░░░
░░░░░░▀██████▀░░░░░░
░░░░░░░░░░░░░░░░░░░░
"""
"""
# Codeforces Round #186 (Div. 2), problem: (A) Ilya and Bank Account

    n = int(input())
    if n > 0:
        print(n)
    else:
        s = str(n)
        if s[len(s)-1] < s[len(s)-2] and s[len(s)-2] != '0':
            print(int(s[:len(s)-2] + s[len(s)-1:]))
        elif s[len(s)-1] > s[len(s)-2] and s[len(s)-1] != '0':
            print(int(s[:len(s)-1]))
        else:
            print(int(s[:len(s)-1]))
"""


"""
# Codeforces Round #261 (Div. 2), problem: (A) Pashmak and Garden,

x1, y1, x2, y2=map(int,input().split())
l=abs(x1-x2)
m=abs(y1-y2)
if x1==x2:
    print(x1+m,y1,x2+m,y2)
elif y1==y2:
    print(x1,y1+l,x2,y2+l)
elif l!=m: 
    print(-1)
else: 
    print(x1,y2,x2,y1)
"""


"""
# Codeforces Round #142 (Div. 2), problem: (A) Dragons

def solve():
    s, n = map(int, input().split())
    sets = []
    for _ in range(n):
        ith, bonus = map(int, input().split())
        sets.append([ith, bonus])
    sets.sort(key=lambda x: x[0])
    for i in sets:  
        if i[0] < s:
                s += i[1]
        else:
            return "NO"
    return "YES"
print(solve())
"""
"""
# Codeforces Round #690 (Div. 3)

# (A) Favorite Sequence-

    for _ in range(int(input())):
        n = int(input())
        l = list(map(int, input().split()))
        ans = []
        k = n//2
        start = 0
        end = len(l)-1
        while start <= end:
            if start != end:
                ans.append(l[start])
                ans.append(l[end])
            else:
                ans.append(l[end])
            start += 1
            end -= 1
        for i in ans:
            print(i, end=" ")
        print()

# B) Last Year's Substring-

    for _ in range(int(input())):
        n = int(input())
        s = input()
        if s[0]+s[1] == '20' and s[-2]+s[-1] == '20':
            print("YES")
        elif s[0] == '2' and s[-3]+s[-2]+s[-1] == '020':
            print("YES")
        elif s[0]+s[1]+s[2] == '202' and s[-1] == '0':
            print("YES")
        elif s[0]+s[1]+s[2]+s[3] == '2020':
            print("YES")
        elif s[-4]+s[-3]+s[-2]+s[-1] == '2020':
            print("YES")
        else:
            print("NO")
"""
"""
# Codeforces Round #251 (Div. 2)
   
    n, d = map(int, input().split())
    l = list(map(int, input().split()))
    if (sum(l) + (n-1)*10) > d:
        print(-1)
    else:
        print((d-sum(l))//5)
"""
"""
# Codeforces Round #290 (Div. 2)

n,m=map(int,input().split())
for i in range(n):
    if i % 4 == 0:
        print('#'*m)
    elif i % 4 == 1:
        print('.'*(m-1)+'#')
    elif i % 4 == 2:
        print('#'*m)
    else:
        print('#'+'.'*(m-1))
        
        
n,m=map(int,input().split())
for i in range(n):
    print(['#'*m,'.'*(m-1)+'#','#'*m,'#'+'.'*(m-1)][i%4])

"""     
"""
# Educational Codeforces Round 100 (Rated for Div. 2)


# problem: (A) Dungeon
    def solve(a, b, c):
        s = a+b+c
        k = s//9
        if s % 9 == 0 and a >= k and b >=k and c >= k:
            return "YES"
        else:
            return "NO"
            
    for _ in range(int(input())):
        a, b, c = map(int, input().split())
        print(solve(a, b, c)) 


# problem: (B) Find The Array

    for _ in range(int(input())):
        n = int(input())
        l = list(map(int, input().split()))
        even = 0
        odd = 0
        for i in range(len(l)):
            if i % 2 == 0:
                even += l[i]
            else:
                odd += l[i]
        
        if even < odd:
            for i in range(len(l)):
                if i % 2 == 0:
                    l[i] = 1
                    print(l[i], end=" ")
                else:
                    print(l[i], end=" ")
        else:
             for i in range(len(l)):
                if i % 2 == 0:
                    print(l[i], end=" ")
                else:
                    l[i] = 1
                    print(l[i], end=" ")

"""



"""
# Codeforces Beta Round #25 (Div. 2 Only), problem: (A) IQ test
    n = int(input())
    nums = list(map(int, input().split()))
    even = 0
    odd = 0
    counter1 = 0
    counter2 = 0
    for i in range(len(nums)):
        if nums[i]%2 == 0:
            counter1+=1
            even = i+1
        else:
            counter2+=1
            odd = i+1
        
    if counter1 == 1:
        print(even)
    else:
        print(odd)
"""

"""
# Codeforces Round #246 (Div. 2), problem: (A) Choosing Teams

    n, k = map(int, input().split())
    l = list(map(int, input().split()))
    counter = 0
    for i in range(len(l)):
        if (5-l[i]) >= k:
            counter += 1
    print(counter//3)
"""

"""
 # Codeforces Round #192 (Div. 2), problem: (A)   
    r, c = map(int, input().split())
    a = set()
    b = set()
    for i in range(r):
        d = input()
        for j in range(len(d)):
            if d[j] == 'S':
                a.add(j)
                b.add(i)
    
    print(r*c - len(a)*len(b))
"""


# n, m = map(int, input().split())
# b = []
# for i in range(n):
#     if min(list(map(int, input().split()))[1:]) < m:
#         b.append(i + 1)
# print(len(b), '\n', *b)
        
"""
 # Codeforces Round #691 (Div. 2), problem: (A) Red-Blue Shuffle,
    for i in range(int(input())):
        n = int(input())
        a = input()
        b = input()
        counter_a = 0
        counter_b = 0
        for j in range(len(a)):
            if a[j] > b[j]:
                counter_a += 1
            elif a[j] < b[j]:
                counter_b += 1
        
        if counter_a > counter_b:
            print("RED")
        elif counter_a < counter_b:
            print("BLUE")
        else:
            print("EQUAL")
    
"""
"""
# Codeforces Round #263 (Div. 2), problem: (A) Appleman and Easy Task
    x = ''
    for _ in range(int(input())):
        x += input()
        
    if x == x[::-1]:
        print("YES")
    else:
        print("NO")
"""
"""
 # Codeforces Round #226 (Div. 2), problem: (A) Bear and Raspberry
    n, c = map(int, input().split())
    l = list(map(int, input().split()))
    ans = l[0] - l[1]
    for i in range(1, len(l)-1):
        ans = max(ans, l[i] - l[i+1])
    if ans - c < 0:
        print(0)
    else:
        print(ans-c)
"""

# n, k = map(int, input().split())
# joy = float("-inf")
# for _ in range(n):
#     f, t = map(int, input().split())
#     if t >= k:
#         joy = max(joy, f - (t - k))
#     else:
#         joy =  max(joy, f)
# print(joy)


"""
# Codeforces Round #260 (Div. 2), problem: (A) Laptops,   
    for _ in range(int(input())):
        a,b=input().split()
        if a!=b:
            print('Happy Alex')
            exit()
    print('Poor Alex')
"""
"""
# Technocup 2021 - Elimination Round 3:
    
    problem: (A) In-game Chat
        for _ in range(int(input())):
            n = int(input())
            s = input()
            j = len(s)-1
            count = 0
            while j >= 0:
                if s[j] != ')':
                    break
                count += 1
                j -= 1
        
            if count > len(s)-count:
                print("YES")
            else:
                print("NO")
"""


# def solve(x):
#     for i in str(x):
#         if i != '0' and x % int(i) != 0:
#             return False
#     return True
     
# t = int(input())
# for _ in range(t):
#     n = int(input())
#     while not solve(n):
#         n += 1
#     print(n)
    
"""
 # Codeforces Round #222 (Div. 2), problem: (A) Playing with Dice
    a, b = map(int, input().split())
    a_w = 0
    b_w = 0
    draw = 0
    for i in range(1, 7):
        if abs(i-a) < abs(i-b):
            a_w += 1
        elif  abs(i-a) > abs(i-b):
            b_w += 1
        else:
            draw += 1
    print(a_w, draw, b_w)
"""
"""
# Codeforces Round #283 (Div. 2), problem: (A) Minimum Difficulty
    n=int(input())
    l=list(map(int,input().split()))
    x=max([l[i+1]-l[i] for i in range(n-1)])
    y=min([l[i+2]-l[i] for i in range(n-2)])
    print(max(x,y))
"""
"""
 # Codeforces Round #156 (Div. 2), problem: (A) Greg's Workout
        n = int(input())
        arr = list(map(int, input().split()))
        chest_count = 0
        biceps_count = 0
        back_count = 0
        for i in range(len(arr)):
            if i%3 == 0:
                chest_count += arr[i]
            elif i%3 == 1:
                biceps_count += arr[i]
            elif i%3 == 2:
                back_count += arr[i]
            
        ans = max(chest_count, biceps_count, back_count)
        
        if chest_count == ans:
            print("chest")
        elif biceps_count == ans:
            print("biceps")
        else:
            print("back")
            
               OR

        input()
        arr = [int(i) for i in input().split()]
        b = [sum(arr[::3]), sum(arr[1::3]), sum(arr[2::3])]
        c = ['chest', 'biceps', 'back']
        print(c[b.index(max(b))])
    
"""
"""
# Codeforces Round #275 (Div. 2), problem: (A) Counterexample
        l, r = map(int, input().split())
        if r - l + 1 < 3:
            print(-1)
            exit()
        if l % 2 == 0:
            print(l, l+1, l+2)
            exit()
        if r - l + 1 > 3:
            print(l+1, l+2, l+3)
            exit()
        print(-1)
"""


"""
 # Codeforces Round #237 (Div. 2), problem: (A) Valera and X
        s = ''
        n = int(input())
        for i in range(n):
            s += input()
        
        if s == s[::-1] and s.count(s[0]) == (2*n-1):
            print("YES")
        else:
            print("NO")
            
            
              OR
              
        n = int(input())
        x, y = set(), set()
        for i in range(n):
            line = input()
            for j in range(n):
                if i == j or i == n - j - 1:
                    x.add(line[j])
                else:
                    y.add(line[j])
        
        if len(x) == 1 and len(y) == 1and x != y:
            print("YES")
        else:
            print("NO")

"""

"""
 # Codeforces Round #144 (Div. 2), problem: (A) Perfect Permutation
        n = int(input())
        startIdx = 1
        secondIdx = 2
        l = [int(i) for i in range(n, 0, -1)]
        if n%2 == 0:
            while secondIdx <= n:
                l.append(secondIdx)
                l.append(startIdx)
                startIdx += 2
                secondIdx += 2
        else:
            print(-1)
                
                OR
                
                
        n=int(input())
        if n%2: print(-1)
        else: print(*range(n,0,-1))
        
"""
"""
# Codeforces Round #284 (Div. 2), problem: (A) Watching a movie
        n, x = map(int, input().split())
        minute = 1
        for _ in range(n):
            l, r = map(int, input().split())
            difference = l - minute
            minute = minute + difference%x
            minute = minute + (r-l+1)
        print(minute-1)
"""


"""
# Codeforces Round #112 (Div. 2), problem: (A) Supercentral Point,
        n = int(input())
        l = []
        for _ in range(n):
            x, y = map(int, input().split())
            l.append([x, y])
        ans = 0
        for i in range(n):
            left=right=upper=down = 0
            for j in range(n):
                if l[i][0] > l[j][0] and l[i][1] == l[j][1]:
                    right += 1
                if l[i][0] < l[j][0] and l[i][1] == l[j][1]:
                    left += 1
                if l[i][0] == l[j][0] and l[i][1] > l[j][1]:
                     upper+= 1
                if l[i][0] == l[j][0] and l[i][1] < l[j][1]:
                    down += 1
            if (right and left and upper and down):
                ans += 1       
        print(ans)
                
                     OR
        
        n = int(input())
        l = []
        for _ in range(n):
            x, y = map(int, input().split())
            l.append([x, y])
        ans = 0
        for i in range(n):
            left=right=upper=down = 0
            for j in range(n):
                if l[i][0] > l[j][0] and l[i][1] == l[j][1]:
                    right = 1
                elif l[i][0] < l[j][0] and l[i][1] == l[j][1]:
                    left = 1
                elif l[i][0] == l[j][0] and l[i][1] > l[j][1]:
                     upper= 1
                elif l[i][0] == l[j][0] and l[i][1] < l[j][1]:
                    down = 1
            if right==left==upper==down==1:
                ans += 1
        print(ans) 
"""
"""
 # Codeforces Round #160 (Div. 2), problem: (A) Roma and Lucky Numbers
        n, k = map(int, input().split())
        arr = list(map(int, input().split()))
        count = 0
        for i in arr:
            if ((str(i).count('4'))+(str(i).count('7')) <= k):
                    count += 1
        print(count)
"""


"""
# A. Contest - Codeforces Round #285 (Div. 2)

        a, b, t1, t2 = map(int, input().split())
        mishra = max((3*a)/10, a - (a/250) * t1)
        vasya = max((3*b)/10, b - (b/250) * t2)
        if int(mishra) > int(vasya):
            print("Misha")
        elif int(mishra) < int(vasya):
            print("Vasya")
        else:
            print("Tie")
""" 
"""
# Codeforces Round #203 (Div. 2), problem: (A)  
        n, m = map(int, input().split())
        a = list(map(int, input().split()[:n]))
        b = list(map(int, input().split()[:m]))
        v = min(a)*2
        p = min(b) 
        c = max(a)
        if v < p and  c < p:
            print(max(v, c))
        else:
            print(-1)
"""

"""
# Codeforces Round #205 (Div. 2), problem: (A) Domino   
a = 0
b = 0
check = 0
for _ in range(int(input())):
    p, q = map(int, input().split())
    a += p
    b += q
    
    if (a % 2 == 1 and b % 2 == 0) or (a % 2 == 0 and b % 2 == 1):
        check += 1

if a % 2 == b % 2 == 0:
    print(0)
elif a % 2 ==  b % 2 == 1 and check > 0:
    print(1)
else:
    print(-1)
"""

"""
#  Codeforces Beta Round #86 (Div. 2 Only), problem: (A) Cifera
        k = int(input())
        l = int(input())        
        i = 0
        while k**i < l:
            i += 1
        
        if l == k**i:
            print("YES")
            print(i-1)
        else:
            print("NO")
"""

"""
# Codeforces Round #181 (Div. 2), problem: (A) Array, 
        n = int(input())
        count_negative = 0
        l = list(map(int, input().split()))
        set_A = []
        set_B = []
        set_C = []
        for i in range(n):
            if l[i] < 0:
                set_A.append(l[i])
            elif l[i] > 0:
                set_B.append(l[i])
            else:
                set_C.append(l[i])
        
        if len(set_B) == 0:
            for i in range(2):
                set_B.append(set_A.pop())   
        if len(set_A) % 2 == 0:
            set_C.append(set_A.pop())
        
        print(len(set_A), *set_A)
        print(len(set_B), *set_B)
        print(len(set_C), *set_C)
"""
"""
n = int(input())
l = sorted(map(int, input().split()))
while len(set(l)) != 1:
    l[-1] -= l[0]
    l.sort()
print(sum(l))
"""
"""
 # Codeforces Round #278 (Div. 2), problem: (A) Giga Tower
        def solve(x):
            for i in str(x):
                if i == '8':
                    return True
            return False
            
        t = int(input())
        t += 1
        s = str(t)
        count = 1
        while not solve(t):
            count += 1
            t += 1
        print(count)
        
            OR
            
        n = int(input())
        b = 1
        while not '8' in str(n+b): 
            b += 1
        print(b)
    
"""
# n, m = map(int, input().split())
# a = ['W', 'B']
# for i in range(n):
#     s = list(input())
#     for j in range(m):
#         if s[j] == '.':
#             s[j] = a[(i+j)%2]
#     print(''.join(s))
    
    
            
"""      
 # Codeforces Beta Round #42 (Div. 2), problem: (A) Football         
        n = int(input())
        freq = {}
        for i in range(n):
            s = input()
            if s not in freq:
                freq[s] = 0
            freq[s] += 1
            
        ans = max(freq.values())    
        for i in freq.keys():
            if freq[i] == ans:
                print(i)
                
                OR
        
        n = int(input())
        l = []
        for i in range(n):
            l.append(input())
        print(max(set(l), key=l.count))
"""

"""
# Codeforces Beta Round #67 (Div. 2), problem: (A) Life Without Zeros
        a = int(input())
        b = int(input())
        c = a + b
        if int(str(a).replace('0', '')) + int(str(b).replace('0', '')) == int(str(c).replace('0', '')):
            print("YES")
        else:
            print("NO")
"""
# def solve():
#     n = int(input())
#     l = list(map(int, input().split()[:n]))
#     for i in range(len(l)-1):
#         if l[i] == l[i+1]:
#             j  = i+1
#             while j < len(l)-1:
#                 if l[i+1] != l[j+1]:
#                     l[i+1], l[j+1] = l[j+1], l[i+1]
#                     break
#                 j += 1
#     for i in range(len(l)-1):
#         if l[i] == l[i+1]:
#             j  = i+1
#             while j < len(l)-1:
#                 if l[i+1] != l[j+1]:
#                     l[i+1], l[j+1] = l[j+1], l[i+1]
#                     break
#                 j += 1
    
    
#     for i in range(len(l)-1):
#         if l[i] == l[i+1]:
#             return "NO"
#     return "YES"

# print(solve())
"""
# Codeforces Round #179 (Div. 2), problem: (A) Yaroslav and Permutations,
        import math
        def solve():
            n = int(input())
            l = list(map(int, input().split()[:n]))
            freq = {}
            for i in l:
                if i not in freq:
                    freq[i] = 0
                freq[i] += 1
            for i in freq.values():
                if i > math.ceil(n/2):
                    return "NO"
            return "YES"
                
        print(solve())
"""
n, k = map(int, input().split())

for i in range(n):
    for j in range(n):
        if i == j:
            print(k, end = " ")
        else:
            print(0, end = " ")
    print()




# s = input()
# t = input()
# count = 0
# i = 0
# while i < len(t):
#     if t[i] == s[count]:
#         count += 1
#     i +=1
# print(count+1)






# def Sorted(l, key=None):
#     new_list = list(l)
#     new_list.sort(key=key)
#     return new_list

# l = [2,1,3,10,3]
# print(Sorted(l))
# print(l)







#Problem - A
# for i in range(int(input())):
#     arr = list(map(int, input().split()))
#     arr.sort()
#     print(arr[0]*arr[2])
    
#problem - N           
# for i in range(int(input())):
#     c1, c2, c3 = map(int, input().split())
#     a1, a2, a3, a4, a5 = map(int, input().split())

#     if c1 >= a1 and c2 >= a2 and c3 >= a3 and c1+c3 >= a1+a3+a4 and c2+c3 >= a2+a3+a5 and (c1+c2+c3) >= (a1+a2+a3+a4+a5):
#         print("YES")
#     else:
#         print("NO")