map{sub __;$/=$_;sub _;map{$g[$/][$_]{c}=rand(time)%2;push@{$g[$/][$_]{n}}, ( \$g[_$/][ $_]{c} =>\$g[__$/][ $_]{c}=>\$g[ $/][_$_]{c}=>\$g[ $/][__$_]{c}, \$g[_$/][_$_]{c} =>\$g[_ $/][__$_]{c}=>\$g[__$/][_$_]{c}=>\$g[__$/][__$_]{c}, )}(0..$s)}(0..($s=(shift or 15)-1));sub __{(($m=shift)+1)<=$s?$m+1:0} sub _ { (($m=shift)-1)>=0?$m-1:$s}__;__;while(1){map{$/=$_;map{print$g[$/][$_]{c}; $u +=$$_ for(@{$g[$/][$_]{n}});$t[$/][$_]{c}=$g[$/][$_]{c};$t[ $/][$_]{c}=($u==3 ?1:($u !=2?0:($t[$/][$_]{c}==1?1:0)));__;$u=~s _.__;}(0..$s);print"\n";}(0 .. $s);print"\n";map{$/=$_; map{$g[$/][$_]{c}=$t[$/][$_]{c}}(0..$s)}(0..$s);_;_; __;_;__;_;__;_;__;_;sleep 1}__;_;__;_;_;__;_;__;_;_;__;_;__;_;_;__;_;__;_;__;