#include <bits/stdc++.h>
using namespace std;
int n, k;
bool matrix[101][101];
bool ok(int x, int y) { return (x >= 0 && y >= 0 && x < n && y < n); }
void inc(int &x, int &y) {
  y++;
  if (y >= n) {
    y = 0;
    x++;
  }
}
int main() {
  scanf("%d", &n);
  scanf("%d", &k);
  if (k > n * n) {
    printf("-1\n");
    return 0;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) matrix[i][j] = 0;
  if (k) {
    matrix[0][0] = 1;
    k--;
  }
  int x = 0, y = 1;
  while (k >= 2 && ok(x, y)) {
    if (!matrix[x][y]) {
      k--;
      matrix[x][y] = 1;
    }
    if (!matrix[y][x]) {
      k--;
      matrix[y][x] = 1;
    }
    inc(x, y);
  }
  x = 1, y = 1;
  if (k) {
    while (matrix[x][y] && ok(x, y)) {
      x++;
      y++;
    }
    if (ok(x, y)) matrix[x][y] = 1;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if (j) printf(" ");
      if (matrix[i][j])
        printf("1");
      else
        printf("0");
    }
    printf("\n");
  }
  return 0;
}
