#include <bits/stdc++.h>
using namespace std;
int g[105][105];
void dfs(int p, int n, int k) {
  if (k == 1) {
    g[p][p] = 1;
    return;
  }
  if (k == 0) return;
  if (n * 2 - 1 <= k) {
    for (int i = p; i <= p + n - 1; i++) g[p][i] = g[i][p] = 1;
    dfs(p + 1, n - 1, k - n * 2 + 1);
  } else {
    for (int i = p; i <= p + (k - 1) / 2; i++) g[p][i] = g[i][p] = 1;
    dfs(p + 1, n - 1, (k + 1) % 2);
  }
}
int main() {
  int n, k;
  cin >> n >> k;
  if (k > n * n)
    printf("-1");
  else {
    dfs(1, n, k);
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        if (j > 1) printf(" ");
        printf("%d", g[i][j]);
      }
      printf("\n");
    }
  }
  return 0;
}
