import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StreamTokenizer in = new StreamTokenizer(br);

        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        in.nextToken();
        int n = (int) in.nval;

        in.nextToken();
        int k = (int) in.nval;
        
        int[] firstRow = new int[n];
        int q = k/n;
        int r = k%n;

        /**
         * sum(firstRow) = r*(q+1) + (n-r)*q = n*q + r = k
         */
        for(int i=0;i<n;i++){
            if(i<r){
                firstRow[i]=q+1;
            }else{
                firstRow[i]=q;
            }
        }

        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                //第i行是第一行循环左移 i 位的结果
                //加n可避免j-i为负数时取模出错
                out.print(firstRow[(j-i+n)%n]+(j==n-1?"":" "));
            }
            out.println();
        }

        out.flush();
        out.close();
        br.close();
    }
}