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