#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#define N 1234
template<typename T> inline void read(T &x) {
	x = 0; char c = getchar();
	while (!isdigit(c)) c = getchar();
	while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
}
using namespace std;
int h[N][N];
int n, m;
void Constr(int U, int D, int L, int R) {
	if (U == D && L == R)	return h[U][L] = 1, void();
	int m1 = (U + D)>>1, m2 = (L + R) >> 1;
	Constr(U, m1 - 1, L, m2 - 1);
	Constr(U, m1 - 1, m2 + 1, R);
	Constr(m1 + 1, D, L, m2 - 1);
	Constr(m1 + 1, D, m2 + 1, R);
	h[m1][m2] = 1;
}
int main() {
	read(n), read(m);
	n = (1 << n) - 1, m = (1 << m) - 1;
	int mx = max(n, m);
	Constr(1, mx, 1, mx);
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= m; ++j) {
			printf("%d", h[i][j]);
		}
		putchar('\n');
	}
	return 0;
}
