const sase:array[1..6,1..6] of integer=
((0,1,0,0,1,1),(0,0,1,0,1,0),(1,0,0,1,0,1),(1,1,0,0,1,0),(0,0,1,0,0,1),(0,1,0,1,0,0));
trei:array[1..3,1..3] of integer=
((0,1,0),(0,0,1),(1,0,0));
var n,i,j:longint;
v:array[1..210,1..210] of integer;
begin
assign(input,'oras.in');reset(input);
assign(output,'oras.out');rewrite(output);
readln(n);
if n=4 then
begin
writeln(-1);
close(output);
halt;
end;
if n mod 2=0 then
begin
for i:=1 to 6 do
for j:=1 to 6 do
v[i,j]:=sase[i,j];
i:=8;
while i<=n do
begin
v[i-1,i]:=1;
for j:=1 to i-2 do
begin
v[j,i-1]:=1;
v[i,j]:=1;
end;
inc(i,2);
end;
end
else
begin
for i:=1 to 3 do
for j:=1 to 3 do
v[i,j]:=trei[i,j];
i:=5;
while i<=n do
begin
v[i-1,i]:=1;
for j:=1 to i-2 do
begin
v[j,i-1]:=1;
v[i,j]:=1;
end;
inc(i,2);
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(v[i,j]);
writeln;
end;
close(input);close(output);
end.