// Copyright 2005 David J. Nixon. All rights reserved.
var p9=new Array("Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado","Hoje","Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"),s2=0,q0=0,r5="$ $ $",i5="Dificuldade",p5=new Array("Suave","Médio","Difícil","Crítico","Perverso"),m4="SudokuHints.com Jogos e Solucionador do Sudokus",u4="Jogos e Solucionador do Sudoku!",r2="Hi: \n\nEstá aqui um local muito bom do sudoku:\n\n",q7="Commercial Enquiry",s3=" célula restante",n3=" células restantes",u1="l",i4="c",s7="Regra da Célula - ",m0=s7+"linhas",d8=s7+"colunas",k3=s7+"quadrados",g3="Regra do Digito",p1=k0=e,i1="<b>Dica:</b> Olhe para a quadrado $",j9="<b>Dica Grande:</b> Coloque um $ na quadrado $",j4="<b>Jogada:</b> Coloque um $ na quadrado $ em $ ($)",t7="<b>Eliminação:</b> ",d3=t7+"O '$$' pares em $ e $ permitem ao $ ser eliminado de $",m1=t7+"O $ na linha $ está na quadrado $, então o $ pode ser eliminado da célula $ nessa quadrado",h4=t7+"O $ na coluna $ está na quadrado $, então o $ pode ser eliminado da célula $ nessa quadrado",g2=t7+"O $ na quadrado $ está na linha $, então o $ pode ser eliminado da célula $ nessa linha",n5=t7+"O $ na quadrado $ está na coluna $, então o $ pode ser eliminado da célula $ nessa coluna",m8=t7+"O x-wing de $s em $, $, $, $ permitem ao $ ser eliminado de $",d2=t7+"O '$$$' trinca em $, $ et $ permitem ao $ ser eliminado de $",r8=t7+"O swordfish de $s em $ permitem ao $ ser eliminado de $",e4=" e ",p4="<b>Resolvido</b>",l0="<b>Encalhado:</b> ",j0="indexOf",m7=(navigator.userAgent.toLowerCase()[j0]('safari')<0),g0="123456789",r9="ABCDEFGHI",q8=g0+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS",i2="TUVWXYZ",l3="#fff",k9="#bbb",t8="#ddd",l8=document,e6=window,p0="red",n1="hidden",k4="visible",i6="innerHTML",f7="checked",d9="backgroundColor",k2="style",n7="value",t6="contentDocument",h8="substr",t4="charCodeAt",l1="charAt",q3="length",i7="-",m3="<div style='position:absolute;left:",h3="pt arial,sans-serif;",o7="<style type='text/css'>\nbody{font:normal 10"+h3+"}\n</style>\n",g8="r",s5="?pos=",p8="sudk",t=s=e7=j2=l2=o3=d1=n9=d6=0,h,g6,m,j5,l9,d=new Array(5),f3=new Array(5),e1=new Array(81),e=f6=o8=j7="",e2=e+e6.location,q4=o0=1,s9=9,k8,s6,r3,r6=new Array(e,e,e,e,e),h1=new Array(e,e,e,e,e),h7=new Array(e,e,e,e,e),d4,k6,o=new Array(0,0,0,3,3,3,6,6,6);function Init(t1){t=t1;C4();B3();C2();A7();j2=1;var i=e2[j0]("?tab=");if(i>-1)T(e2[l1](i+5));A2()}function B4(){return typeof pz!="undefined"}function X(i){return l8.getElementById(i)}function Z(i,j){X(i)[i6]=j}function C1(i,j){X(i)[k2].visibility=j}function B(){if(e6.sidebar)e6.sidebar.addPanel(m4,e2,e);else if(l8.all)e6.external.AddFavorite(e2,m4);else if(e6.opera&&e6.print)return true}function B8(){d[s]=f3[s]=0;I()}function U(q9){var r,c,p,l5=0;if(q9){if(d[s]>0){p=-l9[s][--d[s]];c=l9[s][--d[s]];r=l9[s][--d[s]];l5=1}}else if(f3[s]>d[s]){r=l9[s][d[s]++];c=l9[s][d[s]++];p=l9[s][d[s]++];l5=1}if(l5){e1[r*9+c][n7]=p>0?p:e;p>0?K(r,c,p):A6();B5();A9();W()}I()}function B0(r,c,p){var i;while(d[s]>242){for(i=0;i<243;i++)l9[s][i]=l9[s][i+3];d[s]-=3}l9[s][d[s]++]=r;l9[s][d[s]++]=c;l9[s][d[s]++]=p;f3[s]=d[s];I()}function I(){X("b5").disabled=!d[s];X("b6").disabled=d[s]==f3[s]}function P(i3){i3.blur();if(j2)X("pr").href="sudoku-print.html"+s5+B9()+j7+p5[s]}function V(g9){var r,c;if(j2){Y();if(X("ck")[f7])B5();else if(!g9)for(c=0;c<9;c++)for(r=0;r<9;r++)C5(r,c,l3)}}function B5(){var r,c,rr,cc,i,g7;if(X("ck")[f7])for(c=0;c<9;c++)for(r=0;r<9;r++){g7=1;i=m[r][c];if(i){for(cc=0;cc<9;cc++)if(c-cc&&i==m[r][cc]){g7=0;C5(r,cc,p0)}for(rr=0;rr<9;rr++)if(r-rr&&i==m[rr][c]){g7=0;C5(rr,c,p0)}for(rr=o[r];rr<o[r]+3;rr++)for(cc=o[c];cc<o[c]+3;cc++){if(c-cc&&r-rr&&i==m[rr][cc]){g7=0;C5(rr,cc,p0)}}}C5(r,c,g7?l3:p0)}}function C5(r,c,p2){e1[r*9+c][k2][d9]=X("g"+r+c)[k2][d9]=p2}function Y(){var r,c;if(s9<9){for(r=s9;r<=k8;r++)for(c=s6;c<=r3;c++)if(e1[r*9+c][k2][d9]!=p0)C5(r,c,l3);s9=9}}function B3(){var i,j=1,k,s8=j3=0,r1=new Date(),f2,n4,y,u,s4,k5=g0+i7,q5=e6.name;if(B4()){i=e2[j0]("?date=");while(e2[l1](s9*2)!=i6[l1](0)&&e2[l1](17)!=h8[l1](0)&&e2[l1](1)!=i6[l1](0))i++;n4=i+1?e2[h8](i+6,8):e;f2=Math.ceil((r1.getTime()/10000-r1.getTimezoneOffset()*6-111758400)/8640);if(f2<1)f2=1;do{j1=e+r1.getFullYear();y=r1.getMonth();if(y<9)j1+="0";j1+=y+1;if(!j3)l=j1;y=r1.getDate();if(y<10)j1+="0";j1+=y;f2--;l8.forms['fa'].ai.options[j++]=new Option(A(j1,!j3,1),j1+f2);s8=n4==j1?j1+f2:s8==e?j1+f2:s8;r1.setDate(r1.getDate()-1);j3++}while(f2>0&&j3<62);g=g6*j5+n7[t4](0)+i6[t4](0)+t4[t4](1)+q3[t4](0)+l1[t4](0)+h8[t4](0)+l1[t4](1)+q3[t4](1);i=e2[j0](s5);if(i>-1){n4=e2[h8](i+5);if(n4[q3]>0){l2=1;y=n4[h8](0,81).replace(/0/g,i7);while(y[q3]<81)y+=i7;r6[0]=h1[0]=y;C1("t0",n1)}}else if(q5[h8](0,4)==p8){s=q5[h8](4,1)-0;X("pc")[f7]=(q5[h8](6,1)=="1");X("ck")[f7]=(q5[h8](7,1)=="1");j7=q5[h8](8,8);for(i=0;i<5;i++){r6[i]=h1[i]=e;s4=16+i*81;for(j=s4;j<s4+81;j++){u=q5[l1](j);if(k5[j0](u)>-1){r6[i]+=u;h1[i]+=u}if(r9[j0](u)>-1){r6[i]+="-";h1[i]+=g0[l1](u[t4](0)-65)}}}e6.name=e}else B1(s8)}}function R(){if(j2){h1[s]=r6[s];h7[s]=e;B8();A2()}}function L(i){if(B4()&&i){B1(i);C1("t0",k4);l2=0;for(i=0;i<5;i++){h7[i]=e;d[i]=f3[i]=0}I();C2();A2()}}function C(){var i,y=e;if(j2){Y();for(i=0;i<81;i++)y+=i7;h1[s]=y;h7[s]=e;B8();A2()}}function B1(i){var j=o2=n6=0,f1=1,k,u,y,k7,n0,p,i9,l7=e,h5=new Array(0,2,7,6,9,1,5,4,3,8);j7=i[h8](0,8);i=i[h8](8)-0;k7=parseInt(i/426);i%=426;if(k7){do{if(f1&1)f1=(f1>>1)^272;else f1=f1>>1;if(f1<427)if(o2++==i){i=f1-1;n6=1}}while(f1-1&&!n6)}while(X(g8)[i6]!=g8)i++;for(k=0;k<pz[i][q3];k++){p=0;i9=0;u=pz[i][l1](k);if(u==i7)i9=1;else{n0=q8[j0](u);if(n0>-1){p=n0%9+1;i9=parseInt(n0/9)}else{n0=i2[j0](u);if(n0!=-1)i9=n0+1}}while(i9--)l7+=i7;if(p){for(y=0;y<k7;y++)p=h5[p];l7+=p}if(l7[q3]==81){r6[j]=h1[j]=l7;l7=e;j++}}}function A(j1,i0,e0){var s0=e,o5;if(j1[q3]==8){o5=j1[h8](6,2)-0;j5=(o5%4==0||o5%100!=4)?29:28;s0=(e0?p9[i0>0?7:new Date(j1[h8](0,4),j1[h8](4,2)-1,j1[h8](6,2)).getDay()]+", ":e)+D(r5,(s2&&o5<10?"0":e)+(q0?o5+["th","st","nd","rd"][!(o5>10&&o5<14||o5%10>3)*o5%10]:o5),p9[j1[h8](4,2)-1+8],j1[h8](0,4))}return s0}function C2(){var i=A(j7,0,t),j=e2[j0]("?date=*"),k=e2[t4](17)!=h3[t4](9)?e2[t4](21)!=h3[t4](9)?e2[l1](3)!=q3[l1](1)?0:j:j:j;do{Z("c1",i);Z("c2",i);i++;k++}while(k)}function W(){X("lk").href=(t<1?"index":"sudoku-"+(t<2?"medium":"large"))+".html"+s5+B9()}function F(y){h7[s]+=y+"<br>";A4()}function C6(y){if(o0)d4[i6]=y;else{d4.open();d4.write(o7+y);d4.close()}}function A4(){if(o0)k6[i6]=h7[s];else{k6.open();k6.write(o7+h7[s]);k6.close()}}function A7(){var r,c,h9=p3=e,k1=new Array(37,45,55,12,18,24),q2=(l8.all)?11:12,m9=(l8.all)?8:10,j8=" 2px solid;",m5="background-color:"+l3;for(r=0;r<9;r++)for(c=0;c<9;c++){h9+=m3+c*k1[t]+"px;top:"+r*k1[t]+"px;width:"+(k1[t]-2)+"px;height:"+(k1[t]-2)+"px;border-top:"+(r%3?k9:"#000")+j8+(r>7?"border-bottom:#000"+j8:e)+"border-left:"+(c%3?k9:"#000")+j8+(c>7?"border-right:#000"+j8:e)+m5+";' id='g"+r+c+"'></div>";p3+=m3+(q2+c*k1[t])+"px;top:"+(m9+r*k1[t])+"px;'><input style='border:0;width:"+(k1[t]-21)+"px;font:bold "+k1[t+3]+h3+"text-align:center;vertical-align:middle;"+(m7?m5:e)+"' type='text' id='"+r+c+"' size='1' maxlength='1' onKeyUp='G(event,"+r+","+c+")'></div>"}Z("gd",h9+p3);for(r=0;r<9;r++)for(c=0;c<9;c++)e1[r*9+c]=X(e+r+c)}function E(i){var j="mai";j+="lto:";j+=i-1?"comments@"+"sudokuhints.com":document.eMailer.email.value;j+=i?"?subject=":e;j+=i-1?e:escape(u4)+"&body="+escape(r2+e2);j+=i-2?e:q7;e6.location=j}function A8(){var r,c,l4=e,k1=new Array(37,45,55,26,32,40),j8="color:#000;",t2="px;font:"+(t+7)+h3;for(r=0;r<9;r++)for(c=0;c<9;c++)l4+=m3+(4+c*k1[t])+"px;top:"+(2+r*k1[t])+t2+(m7?j8:e)+"' id='"+"u"+r+c+"'></div>"+m3+(5+c*k1[t])+"px;top:"+(k1[t+3]+r*k1[t])+t2+(m7?j8:e)+"' id='"+"l"+r+c+"'></div>";Z("nb",l4);d6=1}function Q(){var t5=X("pc")[f7];if(j2){if(!d6)A8();C1("nb",(t5)?k4:n1);if(t5)A9()}}function G(d0,r,c){var m2,l6=t9=0,p6=r,u3=c,g1;var u;if(q4){Y();m2=d0.charCode?d0.charCode:d0.keyCode;if(m2>36&&m2<41){if(m2%2)t9=m2-29;else l6=m2-30;do{p6=(p6+l6)%9;u3=(u3+t9)%9;g1=p6*9+u3}while(r6[s][l1](g1)==e1[g1][n7]&&(p6-r||u3-c));e1[g1].select()}else{u=e1[r*9+c][n7];if(u&&g0[j0](u)<0)e1[r*9+c][n7]=u=e;if(!u&&m[r][c]){B0(r,c,-m[r][c]);A6()}else if(m[r][c]!=u){K(r,c,u);B0(r,c,u)}B5();A9();W()}}}function J(o1){var f8=e,i=e2[j0](s5),j,u;if(j2){if(i<0){e6.name=p8+s+t+(X("pc")[f7]?"1":"0")+(X("ck")[f7]?"1":"0")+j7;h1[s]=B9();for(i=0;i<5;i++)for(j=0;j<81;j++){u=h1[i][l1](j);e6.name+=(u==r6[i][l1](j))?u:(u=="-"?u:r9[l1](u[t4](0)-49))}}else o1.href+=e2[h8](i)}}function T(r4){X("a"+r4).blur();if(j2){if(r4>4){X("a5").className=r4==5?"a0":"a1";X("a6").className=r4==6?"a0":"a1";X("st").height=r4==5?51:400}else if(r4-s){h1[s]=B9();s=r4;A2();I()}}return false}function A2(){var i;for(i=0;i<5;i++)X("a"+i).className=i==s?"a0":"a1";if(!l2)Z("d1",i5+": "+p5[s]);if(B4())A5();C6(e);A4();V(1);if(X("pc")[f7])Q();W()}function C3(){var i,f0,r0=new Array(326,407,497,77,96,116);f0=X("bd")[k2];f0.width=f0.height=r0[t]+"px";for(i=1;i<9;i++)X("b"+i)[k2].width=r0[t+3]+"px";C2()}function A5(){var r,c,i,u;e7=q4=0;for(r=0;r<9;r++)for(c=0;c<9;c++){m[r][c]=0;for(i=1;i<10;i++)h[r][c][i]=1}r=c=0;for(i=0;i<81&&l<g;i++){u=h1[s][l1](i);u==i7?u=e:K(r,c,u);e1[i][n7]=u;e1[i][k2].color=r6[s][l1](i)==u?"#000":"#00c";if(++c>8){c=0;r++}}q4=1}function A6(){var r,c,u;for(r=0;r<9;r++)for(c=0;c<9;c++){C5(r,c,l3);m[r][c]=0;for(i=1;i<10;i++)h[r][c][i]=1}e7=0;for(r=0;r<9;r++)for(c=0;c<9;c++){u=e1[r*9+c][n7];if(u)K(r,c,u)}}function K(r,c,p){var rr,cc,i;for(i=0;i<9;i++)h[r][i][p]=h[i][c][p]=0;for(rr=o[r];rr<o[r]+3;rr++)for(cc=o[c];cc<o[c]+3;cc++)h[rr][cc][p]=0;for(i=1;i<=9;i++)h[r][c][i]=0;h[r][c][p]=1;m[r][c]=p;e7++}function A9(){var r,c,i,y,d5;if(!d6)A8();if(X("pc")[f7])for(r=0;r<9;r++)for(c=0;c<9;c++){y=d5=e;if(!m[r][c])for(i=1;i<=9;i++)if(h[r][c][i])y[q3]<6?y+=i:d5+=i;Z("u"+r+c,y);Z("l"+r+c,d5)}}function B9(){var i,u,y=e;for(i=0;i<81;i++){u=e1[i][n7];y+=u?u:i7}return y}function C0(i){return i?l0+i+(i-1?n3:s3):p4}function H(o6){var r,c;if(j2){Y();if(B6()){q4=0;for(r=o[d1];r<o[d1]+3;r++)for(c=o[n9];c<o[n9]+3;c++)if(e1[r*9+c][k2][d9]!=p0)C5(r,c,t8);C6(D(o6?j9:i1,o6?o3:f6,f6).replace(p1,k0));s9=o[d1];k8=s9+2;s6=o[n9];r3=s6+2;q4=1}else C6(C0(81-e7))}}function S(e5){var y,i8=0;if(j2){Y();q4=0;while(!i8&&B6()){K(d1,n9,o3);e1[d1*9+n9][n7]=o3;B0(d1,n9,o3);if(e5){C5(d1,n9,t8);s9=k8=d1;s6=r3=n9;i8=1}y=D(j4,o3,f6,O(d1,n9),o8).replace(p1,k0);C6(e5?y:e);F(y)}q4=1;A9();W();if(!i8){C6(y=C0(81-e7));F(y)}}}function C4(){var r,c,i;h=new Array(9);for(r=0;r<9;r++){h[r]=new Array(9);for(c=0;c<9;c++){h[r][c]=new Array(10);for(i=1;i<10;i++)h[r][c][i]=1}}g8+=g0[l1](0);m=new Array(9);for(r=0;r<9;r++){m[r]=new Array(9);for(c=0;c<9;c++)m[r][c]=0}g6=(9*3)<<8;l9=new Array(5);for(i=0;i<5;i++){l9[i]=new Array(243);d[i]=f3[i]=0;h7[i]=e}g8+=g8+l1[l1](0)+2;while(!X(g8))i++;if(e6.frames&&e6.frames["st"]){d4=e6.frames["st"].window.document;k6=e6.frames["rs"].window.document;o0=0}else if(l8.frames){d4=l8.frames["st"].document.body;k6=l8.frames["rs"].document.body}else if(X("rs")[t6]){X("st").height=21;d4=X("st")[t6].body;k6=X("rs")[t6].body}if(o0)d4[k2].font=k6[k2].font="normal 10"+h3}function A1(r,c,p,y,i,j,w,d5){return(h[r][c][p]?y:e)+(h[r][c][p]&&h[i][j][w]?e4:e)+(h[i][j][w]?d5:e)}function B7(r,c,p,y,i,j,w,d5,rr,cc,t3,f4){return(h[r][c][p]?(y+(h[i][j][w]&&h[rr][cc][t3]?", ":(h[i][j][w]||h[rr][cc][t3])?e4:e)):e)+A1(i,j,w,d5,rr,cc,t3,f4)}function A3(i,j,k,r,p,w,t3){var u=", ",y=h[j][p][i]?O(j,p)+u:e;y+=h[j][w][i]?O(j,w)+u:e;y+=h[j][t3][i]?O(j,t3)+u:e;y+=h[k][p][i]?O(k,p)+u:e;y+=h[k][w][i]?O(k,w)+u:e;y+=h[k][t3][i]?O(k,t3)+u:e;y+=h[r][p][i]?O(r,p)+u:e;y+=h[r][w][i]?O(r,w)+u:e;y+=h[r][t3][i]?O(r,t3)+u:e;y=y[h8](0,y[q3]-2);return y}function O(i,j){return " "+u1+(i+1)+i4+(j+1)}function B2(b,j){var i=0;while(j>0){if(b&256)j--;b=b<<1;i++}return i}function D(y){var i,j=y.split("$"),d5=j[0];for(i=1;i<j[q3];i++)d5+=arguments[i]+j[i];return d5}function M(j){var i;for(i=0;j;i++)j&=j-1;return i}function B6(){var r,c,rr,cc,i,j,k,q1,p7=0,a,d7,o9,e9,t0,f,n,q6,f5,h0,r7,z=new Array(0,3,6),j6=new Array(1,1,1,2,2,2,3,3,3),o4=new Array(0,0,0),b,e8,h6,q,x=new Array(9),s1=new Array(9),v,p,w,t3;if(e7<81){do{for(f=0;f<3&&!p7;f++)for(n=0;n<3&&!p7;n++)for(i=1;i<=9&&!p7;i++){q1=h0=r7=0;for(r=z[f];r<z[f]+3;r++)for(c=z[n];c<z[n]+3;c++)if(h[r][c][i]){q1++;h0=r;r7=c}if(q1==1&&!m[h0][r7]){p7=1;f6=f*3+n+1;d1=h0;n9=r7;o3=i;o8=k3}}for(r=0;r<9&&!p7;r++)for(i=1;i<=9&&!p7;i++){q1=0;for(c=0;c<9;c++)if(h[r][c][i]){q1++;r7=c}if(q1==1&&!m[r][r7]){p7=1;f6=o[r]+j6[r7];d1=r;n9=r7;o3=i;o8=m0}}for(c=0;c<9&&!p7;c++)for(i=1;i<=9&&!p7;i++){q1=0;for(r=0;r<9;r++)if(h[r][c][i]){q1++;h0=r}if(q1==1&&!m[h0][c]){p7=1;f6=o[h0]+j6[c];d1=h0;n9=c;o3=i;o8=d8}}for(r=0;r<9&&!p7;r++)for(c=0;c<9&&!p7;c++)if(!m[r][c]){q1=0;for(i=1;i<=9&&!p7;i++)q1+=h[r][c][i];if(q1==1){i=1;while(i<9&&!h[r][c][i])i++;p7=1;f6=o[r]+j6[c];d1=r;n9=c;o3=i;o8=g3}}if(!p7){a=0;b=new Array(9);for(r=0;r<9;r++){b[r]=new Array(9);for(c=0;c<9;c++){h6=0;for(i=1;i<=9;i++)h6=(h6<<1)|(!m[r][c]&&h[r][c][i]);b[r][c]=h6}}for(r=0;r<9&&!a;r++){v=0;for(c=0;c<9;c++)if(!m[r][c])x[v++]=c;for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++){q=b[r][x[i]]|b[r][x[j]];if(M(q)==2){p=B2(q,1);w=B2(q,2);for(cc=0;cc<9;cc++)if(cc-x[i]&&cc-x[j])if(q&b[r][cc]){F(D(d3,p,w,O(r,x[i]),O(r,x[j]),A1(r,cc,p,p,r,cc,w,w),O(r,cc)));h[r][cc][p]=h[r][cc][w]=0;a=1}}}}for(c=0;c<9&&!a;c++){v=0;for(r=0;r<9;r++)if(!m[r][c])x[v++]=r;for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++){q=b[x[i]][c]|b[x[j]][c];if(M(q)==2){p=B2(q,1);w=B2(q,2);for(rr=0;rr<9;rr++)if(rr-x[i]&&rr-x[j])if(q&b[rr][c]){F(D(d3,p,w,O(x[i],c),O(x[j],c),A1(rr,c,p,p,rr,c,w,w),O(rr,c)));h[rr][c][p]=h[rr][c][w]=0;a=1}}}}for(f=0;f<3&&!a;f++)for(n=0;n<3&&!a;n++){v=0;for(r=z[f];r<z[f]+3;r++)for(c=z[n];c<z[n]+3;c++)if(!m[r][c]){x[v]=r;s1[v]=c;v++}for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++){q=b[x[i]][s1[i]]|b[x[j]][s1[j]];if(M(q)==2){p=B2(q,1);w=B2(q,2);for(rr=z[f];rr<z[f]+3;rr++)for(cc=z[n];cc<z[n]+3;cc++)if((rr-x[i]||cc-s1[i])&&(rr-x[j]||cc-s1[j]))if(q&b[rr][cc]){F(D(d3,p,w,O(x[i],s1[i]),O(x[j],s1[j]),A1(rr,cc,p,p,rr,cc,w,w),O(rr,cc)));h[rr][cc][p]=h[rr][cc][w]=0;a=1}}}}for(r=0;r<9&&!a;r++)for(i=1;i<=9&&!a;i++){q1=e9=0;while(e9<9&&!h[r][e9][i])e9++;t0=8;while(t0>=0&&!h[r][t0][i])t0--;if(t0>e9&&o[e9]==o[t0])for(rr=o[r];rr<o[r]+3;rr++)for(cc=o[e9];cc<o[e9]+3;cc++)if(rr-r)if(h[rr][cc][i]){F(D(m1,i,r+1,o[r]+j6[cc],i,O(rr,cc)));h[rr][cc][i]=0;a=1}}for(c=0;c<9&&!a;c++)for(i=1;i<=9&&!a;i++){q1=d7=0;while(d7<9&&!h[d7][c][i])d7++;o9=8;while(o9>=0&&!h[o9][c][i])o9--;if(o9>d7&&o[d7]==o[o9])for(rr=o[d7];rr<o[d7]+3;rr++)for(cc=o[c];cc<o[c]+3;cc++)if(cc-c)if(h[rr][cc][i]){F(D(h4,i,c+1,o[rr]+j6[c],i,O(rr,cc)));h[rr][cc][i]=0;a=1}}for(f=0;f<3&&!a;f++)for(n=0;n<3&&!a;n++)for(i=1;i<=9&&!a;i++){o4[0]=o4[1]=o4[2]=0;for(q6=0;q6<3;q6++)for(c=z[n];c<z[n]+3;c++)if(h[q6+z[f]][c][i])o4[q6]=1;if(o4[0]+o4[1]+o4[2]==1){r=0;while(o4[r]-1)r++;r+=z[f];for(c=0;c<9;c++)if(c<z[n]||c>z[n]+2)if(h[r][c][i]){F(D(g2,i,f*3+n+1,r+1,i,O(r,c)));h[r][c][i]=0;a=1}}}for(f=0;f<3&&!a;f++)for(n=0;n<3&&!a;n++)for(i=1;i<=9&&!a;i++){o4[0]=o4[1]=o4[2]=0;for(f5=0;f5<3;f5++)for(r=z[f];r<z[f]+3;r++)if(h[r][f5+z[n]][i])o4[f5]=1;if(o4[0]+o4[1]+o4[2]==1){c=0;while(o4[c]-1)c++;c+=z[n];for(r=0;r<9;r++)if(r<z[f]||r>z[f]+2)if(h[r][c][i]){F(D(n5,i,f*3+n+1,c+1,i,O(r,c)));h[r][c][i]=0;a=1}}}e8=new Array(9);for(r=0;r<9&&!a;r++){e8[r]=new Array(10);for(i=1;i<=9;i++){h6=0;for(c=0;c<9;c++)h6=(h6<<1)|(!m[r][c]&&h[r][c][i]);e8[r][i]=h6}}for(i=1;i<=9&&!a;i++){v=0;for(r=0;r<9;r++)if(e8[r][i])x[v++]=r;for(j=0;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++){q=e8[x[j]][i]|e8[x[k]][i];if(M(q)==2){p=B2(q,1)-1;w=B2(q,2)-1;for(rr=0;rr<9;rr++)if(rr-x[j]&&rr-x[k])if(q&e8[rr][i]){F(D(m8,i,O(x[j],p),O(x[j],w),O(x[k],p),O(x[k],w),i,A1(rr,p,i,O(rr,p),rr,w,i,O(rr,w))));h[rr][p][i]=h[rr][w][i]=0;a=1}}}}for(c=0;c<9&&!a;c++)for(i=1;i<=9;i++){h6=0;for(r=0;r<9;r++)h6=(h6<<1)|(!m[r][c]&&h[r][c][i]);e8[c][i]=h6}for(i=1;i<=9&&!a;i++){v=0;for(c=0;c<9;c++)if(e8[c][i])x[v++]=c;for(j=0;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++){q=e8[x[j]][i]|e8[x[k]][i];if(M(q)==2){p=B2(q,1)-1;w=B2(q,2)-1;for(cc=0;cc<9;cc++)if(cc-x[j]&&cc-x[k])if(q&e8[cc][i]){F(D(m8,i,O(p,x[j]),O(w,x[j]),O(p,x[k]),O(w,x[k]),i,A1(p,cc,i,O(p,cc),w,cc,i,O(w,cc))));h[p][cc][i]=h[w][cc][i]=0;a=1}}}}for(r=0;r<9&&!a;r++){v=0;for(c=0;c<9;c++)if(!m[r][c])x[v++]=c;for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++){q=b[r][x[i]]|b[r][x[j]]|b[r][x[k]];if(M(q)==3){p=B2(q,1);w=B2(q,2);t3=B2(q,3);for(cc=0;cc<9;cc++)if(cc-x[i]&&cc-x[j]&&cc-x[k])if(q&b[r][cc]){F(D(d2,p,w,t3,O(r,x[i]),O(r,x[j]),O(r,x[k]),B7(r,cc,p,p,r,cc,w,w,r,cc,t3,t3),O(r,cc)));h[r][cc][p]=h[r][cc][w]=h[r][cc][t3]=0;a=1}}}}for(c=0;c<9&&!a;c++){v=0;for(r=0;r<9;r++)if(!m[r][c])x[v++]=r;for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++){q=b[x[i]][c]|b[x[j]][c]|b[x[k]][c];if(M(q)==3){p=B2(q,1);w=B2(q,2);t3=B2(q,3);for(rr=0;rr<9;rr++)if(rr-x[i]&&rr-x[j]&&rr-x[k])if(q&b[rr][c]){F(D(d2,p,w,t3,O(x[i],c),O(x[j],c),O(x[k],c),B7(rr,c,p,p,rr,c,w,w,rr,c,t3,t3),O(rr,c)));h[rr][c][p]=h[rr][c][w]=h[rr][c][t3]=0;a=1}}}}for(f=0;f<3&&!a;f++)for(n=0;n<3&&!a;n++){v=0;for(r=z[f];r<z[f]+3;r++)for(c=z[n];c<z[n]+3;c++)if(!m[r][c]){x[v]=r;s1[v]=c;v++}for(i=0;i<v&&!a;i++)for(j=i+1;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++){q=b[x[i]][s1[i]]|b[x[j]][s1[j]]|b[x[k]][s1[k]];if(M(q)==3){p=B2(q,1);w=B2(q,2);t3=B2(q,3);for(rr=z[f];rr<z[f]+3;rr++)for(cc=z[n];cc<z[n]+3;cc++)if((rr-x[i]||cc-s1[i])&&(rr-x[j]||cc-s1[j])&&(rr-x[k]||cc-s1[k]))if(q&b[rr][cc]){F(D(d2,p,w,t3,O(x[i],s1[i]),O(x[j],s1[j]),O(x[k],s1[k]),B7(rr,cc,p,p,rr,cc,w,w,rr,cc,t3,t3),O(rr,cc)));h[rr][cc][p]=h[rr][cc][w]=h[rr][cc][t3]=0;a=1}}}}for(r=0;r<9&&!a;r++)for(i=1;i<=9;i++){h6=0;for(c=0;c<9;c++)h6=(h6<<1)|(!m[r][c]&&h[r][c][i]);e8[r][i]=h6}for(i=1;i<=9&&!a;i++){v=0;for(r=0;r<9;r++)if(e8[r][i])x[v++]=r;for(j=0;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++)for(r=k+1;r<v&&!a;r++){q=e8[x[j]][i]|e8[x[k]][i]|e8[x[r]][i];if(M(q)==3){p=B2(q,1)-1;w=B2(q,2)-1;t3=B2(q,3)-1;for(rr=0;rr<9;rr++)if(rr-x[j]&&rr-x[k]&&rr-x[r])if(q&e8[rr][i]){F(D(r8,i,A3(i,x[j],x[k],x[r],p,w,t3),i,B7(rr,p,i,O(rr,p),rr,w,i,O(rr,w),rr,t3,i,O(rr,t3))));h[rr][p][i]=h[rr][w][i]=h[rr][t3][i]=0;a=1}}}}for(c=0;c<9&&!a;c++)for(i=1;i<=9;i++){h6=0;for(r=0;r<9;r++)h6=(h6<<1)|(!m[r][c]&&h[r][c][i]);e8[c][i]=h6}for(i=1;i<=9&&!a;i++){v=0;for(c=0;c<9;c++)if(e8[c][i])x[v++]=c;for(j=0;j<v&&!a;j++)for(k=j+1;k<v&&!a;k++)for(r=k+1;r<v&&!a;r++){q=e8[x[j]][i]|e8[x[k]][i]|e8[x[r]][i];if(M(q)==3){p=B2(q,1)-1;w=B2(q,2)-1;t3=B2(q,3)-1;for(cc=0;cc<9;cc++)if(cc-x[j]&&cc-x[k]&&cc-x[r])if(q&e8[cc][i]){F(D(r8,i,A3(i,p,w,t3,x[j],x[k],x[r]),i,B7(p,cc,i,O(p,cc),w,cc,i,O(w,cc),t3,cc,i,O(t3,cc))));h[p][cc][i]=h[w][cc][i]=h[t3][cc][i]=0;a=1}}}}}}while(!p7&&a)}return p7}

