#include <bits/stdc++.h>
using namespace std;
int vis[1000][1000];
int main() {
  int n, k;
  memset(vis, 0, sizeof(vis));
  scanf("%d%d", &n, &k);
  bool flag = true;
  if (k > n * n)
    flag = false;
  else {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (vis[i][j])
          continue;
        else if (i == j && k != 0) {
          vis[i][j] = 1;
          k--;
        } else if (k >= 2) {
          vis[i][j] = vis[j][i] = 1;
          k -= 2;
        }
      }
    }
    if (k) flag = false;
  }
  if (flag) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        if (j == 0)
          printf("%d", vis[i][j]);
        else
          printf(" %d", vis[i][j]);
      }
      printf("\n");
    }
  } else
    puts("-1");
  return 0;
}
