#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
const long long inf = 0x3f3f3f3f;
const long long MAXN = 1e5 + 7;
const double PI = acos(-1.);
long long t, n, m, ans, tot;
long long f[MAXN];
struct NODE {
  long long id;
};
NODE node[7];
long long a[111][111];
int main() {
  long long i, j, k, l, ca = 0, u, v, w;
  cin >> n >> m;
  for (i = 1; i <= n && m; i++) {
    a[i][i] = 1;
    m--;
    for (j = i + 1; j <= n && m > 1; j++) {
      a[i][j] = a[j][i] = 1;
      m -= 2;
    }
  }
  if (m) return cout << "-1" << endl, 0;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (j > 1) cout << " ";
      cout << a[i][j];
    }
    cout << endl;
  }
  return 0;
}
