#include #define rep(i,N) for(int i=0;i<(N);i++) #define rrep(i, n) for (int i = (int)n-1; i >= 0; --i) #define FOR(i,a,b) for(int i=(a);i<(b);i++) using namespace std; const long long MOD = 1e9 + 7; const long long INF = 1e12; const int inf = 1e9; const int mod = 1e9+7; typedef long long ll; typedef pair P; typedef set S; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } __attribute__ ((constructor)) void fastio() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(10); } int main(){ int v, d; cin >> v >> d; vector> ans(v, vector(v, 0)); if(d == 1){ rep(i, v) rep(j, v) ans[i][j] = 1; }else if(d% 2 != 0){ ans[0][0] = 1; rep(i,v){ rep(j,v){ if (i == 0 || j == 0) ans[i][j] = 1; } } }else{ rep(i,v){ rep(j,v){ if ((i == 0 || j == 0) && !(i == 0 && j == 0)) ans[i][j] = 1; } } } // if(d >= 3 && d%2 != 0){ // rep(i,v){ // rep(j,v){ // if (i == 0 || j == 0) ans[i][j] = 1; // } // } // } // if(d%2 == 0){ // ans[0][0] = 1; // rep(i,v){ // rep(j,v){ // if ((i == 0 || j == 0) && !(i == 0 && j == 0)) ans[i][j] = 1; // } // } // // FOR(i,1,v){ // // if(i%2 != 1){ // // if(i + 1 < v){ // // ans[i][i + 1] = 1; // // ans[i + 1][i] = 1; // // }else if(v >= 2){ // // ans[i][1] = 1; // // ans[1][i] = 1; // // } // // } // // } // } rep(i, v) { rep(j, v) cout << ans[i][j] << (j == v - 1 ? "\n" : ""); } return 0; }