#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1);
const int MAX = 2e5 + 5;
int main() {
  int n, k;
  int data[105][105];
  while (cin >> n >> k) {
    memset(data, 0, sizeof(data));
    if (k > n * n)
      cout << "-1" << endl;
    else {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
          if (data[i][j] == 0 && k != 0) {
            if (i == j) {
              k--;
              data[i][j] = 1;
            } else if (k > 1) {
              if (data[i][j] == 0 && k != 0) {
                data[i][j] = 1;
                k--;
              }
              if (data[j][i] == 0 && k != 0) {
                data[j][i] = 1;
                k--;
              }
            }
          }
          if (k == 0) break;
        }
      }
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
          cout << data[i][j];
          if (j != (n - 1)) cout << " ";
        }
        cout << endl;
      }
    }
  }
  return 0;
}
