program gfdg;
const n=7;
type mas=array [0..n+1,0..n+1] of byte;
function f(k,i,j:longint; m:mas):boolean;
var m1,m2,m3:mas; t,l:byte;
begin
for t:=0 to (n+1) do for l:=0 to (n+1) do begin m1[t,l]:=m[t,l]; m2[t,l]:=m[t,l]; m3[t,l]:=m[t,l]; end;
if (m[i+1,j]=0) and (m[i,j+1]=0) and (m[i-1,j-1]=0) then
begin
m1[i+1,j]:=1; m2[i,j+1]:=1; m3[i-1,j-1]:=1;
if (k mod 2)=0 then f:=(f(k+1,i+1,j,m1) or f(k+1,i,j+1,m2)) or f(k+1,i-1,j-1,m3);
if (k mod 2)=1 then f:=(f(k+1,i+1,j,m1) and f(k+1,i,j+1,m2)) and f(k+1,i-1,j-1,m3);
end;
if (m[i+1,j]=0) and (m[i,j+1]=0) and (m[i-1,j-1]=1) then
begin
m1[i+1,j]:=1; m2[i,j+1]:=1;
if (k mod 2)=0 then f:=f(k+1,i+1,j,m1) or f(k+1,i,j+1,m2);
if (k mod 2)=1 then f:=f(k+1,i+1,j,m1) and f(k+1,i,j+1,m2);
end;
if (m[i+1,j]=0) and (m[i,j+1]=1) and (m[i-1,j-1]=0) then
begin
m1[i+1,j]:=1; m3[i-1,j-1]:=1;
if (k mod 2)=0 then f:=f(k+1,i+1,j,m1) or f(k+1,i-1,j-1,m3);
if (k mod 2)=1 then f:=f(k+1,i+1,j,m1) and f(k+1,i-1,j-1,m3);
end;
if (m[i+1,j]=1) and (m[i,j+1]=0) and (m[i-1,j-1]=0) then
begin
m2[i,j+1]:=1; m3[i-1,j-1]:=1;
if (k mod 2)=0 then f:=f(k+1,i,j+1,m2) or f(k+1,i-1,j-1,m3);
if (k mod 2)=1 then f:=f(k+1,i,j+1,m2) and f(k+1,i-1,j-1,m3);
end;
if (m[i+1,j]=1) and (m[i,j+1]=1) and (m[i-1,j-1]=0) then
begin
m3[i-1,j-1]:=1;
f:=f(k+1,i-1,j-1,m3);
end;
if (m[i+1,j]=1) and (m[i,j+1]=0) and (m[i-1,j-1]=1) then
begin
m2[i,j+1]:=1;
f:=f(k+1,i,j+1,m2);
end;
if (m[i+1,j]=0) and (m[i,j+1]=1) and (m[i-1,j-1]=1) then
begin
m1[i+1,j]:=1;
f:=f(k+1,i+1,j,m1);
end;
if (m[i+1,j]=1) and (m[i,j+1]=1) and (m[i-1,j-1]=1) then
begin
if (k mod 2)=0 then f:=false else f:=true;
end;
end;
var m0,rez:mas; i3,j3,i0,j0:byte;
begin
for i3:=1 to n do
for j3:=1 to n do
begin
for i0:=1 to n do
for j0:=1 to n do
m0[i0,j0]:=0;
for i0:=0 to (n+1) do begin m0[i0,0]:=1; m0[i0,n+1]:=1; m0[0,i0]:=1; m0[n+1,i0]:=1;end;
m0[i3,j3]:=1;
if f(0,i3,j3,m0) then rez[i3,j3]:=1 else rez[i3,j3]:=2;
end;
for i0:=1 to n do
begin writeln('');
for j0:=1 to n do write(rez[i0,j0],' ');
end;
end.
cHJvZ3JhbSBnZmRnOwpjb25zdCBuPTc7CnR5cGUgbWFzPWFycmF5IFswLi5uKzEsMC4ubisxXSBvZiBieXRlOwpmdW5jdGlvbiBmKGssaSxqOmxvbmdpbnQ7IG06bWFzKTpib29sZWFuOwp2YXIgbTEsbTIsbTM6bWFzOyB0LGw6Ynl0ZTsKYmVnaW4KICBmb3IgdDo9MCB0byAobisxKSBkbyBmb3IgbDo9MCB0byAobisxKSBkbyBiZWdpbiBtMVt0LGxdOj1tW3QsbF07IG0yW3QsbF06PW1bdCxsXTsgbTNbdCxsXTo9bVt0LGxdOyBlbmQ7CiAgaWYgKG1baSsxLGpdPTApIGFuZCAobVtpLGorMV09MCkgYW5kIChtW2ktMSxqLTFdPTApIHRoZW4KICBiZWdpbgogICAgIG0xW2krMSxqXTo9MTsgbTJbaSxqKzFdOj0xOyBtM1tpLTEsai0xXTo9MTsKICAgIGlmIChrIG1vZCAyKT0wIHRoZW4gZjo9KGYoaysxLGkrMSxqLG0xKSBvciBmKGsrMSxpLGorMSxtMikpIG9yIGYoaysxLGktMSxqLTEsbTMpOyAKICAgICBpZiAoayBtb2QgMik9MSB0aGVuIGY6PShmKGsrMSxpKzEsaixtMSkgYW5kIGYoaysxLGksaisxLG0yKSkgYW5kIGYoaysxLGktMSxqLTEsbTMpOyAKICBlbmQ7CiAgaWYgKG1baSsxLGpdPTApIGFuZCAobVtpLGorMV09MCkgYW5kIChtW2ktMSxqLTFdPTEpIHRoZW4KICBiZWdpbgogICAgIG0xW2krMSxqXTo9MTsgbTJbaSxqKzFdOj0xOwogICAgaWYgKGsgbW9kIDIpPTAgdGhlbiBmOj1mKGsrMSxpKzEsaixtMSkgb3IgZihrKzEsaSxqKzEsbTIpOyAKICAgICBpZiAoayBtb2QgMik9MSB0aGVuIGY6PWYoaysxLGkrMSxqLG0xKSBhbmQgZihrKzEsaSxqKzEsbTIpOyAKICBlbmQ7CiAgaWYgKG1baSsxLGpdPTApIGFuZCAobVtpLGorMV09MSkgYW5kIChtW2ktMSxqLTFdPTApIHRoZW4KICBiZWdpbgogICAgIG0xW2krMSxqXTo9MTsgbTNbaS0xLGotMV06PTE7CiAgICBpZiAoayBtb2QgMik9MCB0aGVuIGY6PWYoaysxLGkrMSxqLG0xKSBvciBmKGsrMSxpLTEsai0xLG0zKTsgCiAgICAgaWYgKGsgbW9kIDIpPTEgdGhlbiBmOj1mKGsrMSxpKzEsaixtMSkgYW5kIGYoaysxLGktMSxqLTEsbTMpOyAKICBlbmQ7CiAgaWYgKG1baSsxLGpdPTEpIGFuZCAobVtpLGorMV09MCkgYW5kIChtW2ktMSxqLTFdPTApIHRoZW4KICBiZWdpbgogICAgICBtMltpLGorMV06PTE7IG0zW2ktMSxqLTFdOj0xOwogICAgaWYgKGsgbW9kIDIpPTAgdGhlbiBmOj1mKGsrMSxpLGorMSxtMikgb3IgZihrKzEsaS0xLGotMSxtMyk7IAogICAgIGlmIChrIG1vZCAyKT0xIHRoZW4gZjo9ZihrKzEsaSxqKzEsbTIpIGFuZCBmKGsrMSxpLTEsai0xLG0zKTsgCiAgZW5kOwogIGlmIChtW2krMSxqXT0xKSBhbmQgKG1baSxqKzFdPTEpIGFuZCAobVtpLTEsai0xXT0wKSB0aGVuCiAgYmVnaW4KICAgIG0zW2ktMSxqLTFdOj0xOwogICAgZjo9ZihrKzEsaS0xLGotMSxtMyk7IAogIGVuZDsKICBpZiAobVtpKzEsal09MSkgYW5kIChtW2ksaisxXT0wKSBhbmQgKG1baS0xLGotMV09MSkgdGhlbgogIGJlZ2luCiAgICBtMltpLGorMV06PTE7CiAgICBmOj1mKGsrMSxpLGorMSxtMik7IAogIGVuZDsKICBpZiAobVtpKzEsal09MCkgYW5kIChtW2ksaisxXT0xKSBhbmQgKG1baS0xLGotMV09MSkgdGhlbgogIGJlZ2luCiAgICAgbTFbaSsxLGpdOj0xOwogICAgZjo9ZihrKzEsaSsxLGosbTEpOyAKICBlbmQ7CiAgIGlmIChtW2krMSxqXT0xKSBhbmQgKG1baSxqKzFdPTEpIGFuZCAobVtpLTEsai0xXT0xKSB0aGVuCiAgYmVnaW4KICAgICBpZiAoayBtb2QgMik9MCB0aGVuIGY6PWZhbHNlIGVsc2UgZjo9dHJ1ZTsgCiAgZW5kOwplbmQ7CnZhciBtMCxyZXo6bWFzOyBpMyxqMyxpMCxqMDpieXRlOwpiZWdpbgogZm9yIGkzOj0xIHRvIG4gZG8KIGZvciBqMzo9MSB0byBuIGRvCiBiZWdpbgogICAgIGZvciBpMDo9MSB0byBuIGRvCiAgICAgZm9yIGowOj0xIHRvIG4gZG8gCiAgICAgIG0wW2kwLGowXTo9MDsKICAgICBmb3IgaTA6PTAgdG8gKG4rMSkgZG8gYmVnaW4gbTBbaTAsMF06PTE7IG0wW2kwLG4rMV06PTE7IG0wWzAsaTBdOj0xOyBtMFtuKzEsaTBdOj0xO2VuZDsKICAgICBtMFtpMyxqM106PTE7CiAgICAgaWYgZigwLGkzLGozLG0wKSB0aGVuIHJleltpMyxqM106PTEgZWxzZSByZXpbaTMsajNdOj0yOwogZW5kOwogZm9yIGkwOj0xIHRvIG4gZG8KIGJlZ2luIHdyaXRlbG4oJycpOwogZm9yIGowOj0xIHRvIG4gZG8gd3JpdGUocmV6W2kwLGowXSwnICcpOwogZW5kOwplbmQu