// Copyright 2005 David J. Nixon. All rights reserved.
var o6=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Today","Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"),i6=0,v1=1,i1="$ $ $",m5="Difficulty",f2=new Array("Mild","Medium","Hard","Wicked","Fiendish"),n8="SudokuHints.com Solver and Puzzles",m7="Sudoku Solver and Puzzles - Check It Out!",i3="Hi: \n\nHere\'s a great Sudoku solver/puzzle web site you should check out:\n\n",m1="Commercial Enquiry",v5=" cell left",n1=" cells left",t8="r",m9="c",k1="Cell Rule - ",d5=k1+"rows",k2=k1+"columns",f1=k1+"boxes",j8="Digit Rule",l7="a 8",v2="an 8",u4="<b>Hint:</b> Look at box $",j2="<b>Big Hint:</b> Put a $ in box $",d7="<b>Step:</b> Put a $ in box $ at $ ($)",o9="<b>Elimination:</b> ",s1=o9+"The '$$' naked pair at $ and $ allows the $ to be eliminated from $",v3=o9+"The $ in row $ is in box $, so $ can be eliminated from cell $ in that box",l6=o9+"The $ in column $ is in box $, so $ can be eliminated from cell $ in that box",s4=o9+"The $ in box $ is in row $, so $ can be eliminated from cell $ in that row",t2=o9+"The $ in box $ is in column $, so $ can be eliminated from cell $ in that column",o2=o9+"The x-wing of $s at $, $, $, $ allows the $ to be eliminated from $",s5=o9+"The '$$$' naked triple at $, $ and $ allows the $ to be eliminated from $",t6=o9+"The swordfish of $s at $ allows the $ to be eliminated from $",p1=" and ",f9="<b>Solved</b>",p7="<b>Stuck:</b> ",r7="indexOf",k7=(navigator.userAgent.toLowerCase()[r7]('safari')<0),g3="123456789",u6="ABCDEFGHI",o4=g3+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS",l4="TUVWXYZ",g6="#fff",h3="#bbb",e3="#ddd",r4=document,i5=window,d2="red",e2="hidden",e4="visible",o1="innerHTML",f5="checked",q6="backgroundColor",t1="style",n9="value",d8="contentDocument",m3="substr",h8="charCodeAt",k6="charAt",s3="length",g5="-",q9="<div style='position:absolute;left:",p9="pt arial,sans-serif;",u8="<style type='text/css'>\nbody{font:normal 10"+p9+"}\n</style>\n",j1="r",f8="?pos=",n6="sudk",z=n=j6=s9=o3=j5=d1=w4=r9=0,e,k9,b,g1,p6,t=new Array(5),e9=new Array(5),l5=new Array(81),x=n3=m2=u3="",s6=x+i5.location,u7=r8=1,p3=9,h4,m8,d3,f6=new Array(x,x,x,x,x),m6=new Array(x,x,x,x,x),h5=new Array(x,x,x,x,x),j4,m4,p=new Array(0,0,0,3,3,3,6,6,6);function Init(u2){z=u2;C3();B7();B9();A3();s9=1;var i=s6[r7]("?tab=");if(i>-1)T(s6[k6](i+5));B6()}function B5(){return typeof pz!="undefined"}function Y(i){return r4.getElementById(i)}function A(i,j){Y(i)[o1]=j}function A1(i,j){Y(i)[t1].visibility=j}function B(){if(i5.sidebar)i5.sidebar.addPanel(n8,s6,x);else if(r4.all)i5.external.AddFavorite(s6,n8);else if(i5.opera&&i5.print)return true}function B3(){t[n]=e9[n]=0;M()}function U(i4){var r,c,o,h2=0;if(i4){if(t[n]>0){o=-p6[n][--t[n]];c=p6[n][--t[n]];r=p6[n][--t[n]];h2=1}}else if(e9[n]>t[n]){r=p6[n][t[n]++];c=p6[n][t[n]++];o=p6[n][t[n]++];h2=1}if(h2){l5[r*9+c][n9]=o>0?o:x;o>0?F(r,c,o):C4();A8();C9();W()}M()}function M(){Y("b5").disabled=!t[n];Y("b6").disabled=t[n]==e9[n]}function A9(r,c,o){var i;while(t[n]>242){for(i=0;i<243;i++)p6[n][i]=p6[n][i+3];t[n]-=3}p6[n][t[n]++]=r;p6[n][t[n]++]=c;p6[n][t[n]++]=o;e9[n]=t[n];M()}function P(s8){s8.blur();if(s9)Y("pr").href="sudoku-print.html"+f8+B2()+u3+f2[n]}function C(){var i,s=x;if(s9){O();for(i=0;i<81;i++)s+=g5;m6[n]=s;h5[n]=x;B3();B6()}}function R(){if(s9){m6[n]=f6[n];h5[n]=x;B3();B6()}}function V(e1){var r,c;if(s9){O();if(Y("ck")[f5])A8();else if(!e1)for(c=0;c<9;c++)for(r=0;r<9;r++)B1(r,c,g6)}}function A8(){var r,c,rr,cc,i,k5;if(Y("ck")[f5])for(c=0;c<9;c++)for(r=0;r<9;r++){k5=1;i=b[r][c];if(i){for(cc=0;cc<9;cc++)if(c-cc&&i==b[r][cc]){k5=0;B1(r,cc,d2)}for(rr=0;rr<9;rr++)if(r-rr&&i==b[rr][c]){k5=0;B1(rr,c,d2)}for(rr=p[r];rr<p[r]+3;rr++)for(cc=p[c];cc<p[c]+3;cc++){if(c-cc&&r-rr&&i==b[rr][cc]){k5=0;B1(rr,cc,d2)}}}B1(r,c,k5?g6:d2)}}function B1(r,c,j9){l5[r*9+c][t1][q6]=Y("g"+r+c)[t1][q6]=j9}function O(){var r,c;if(p3<9){for(r=p3;r<=h4;r++)for(c=m8;c<=d3;c++)if(l5[r*9+c][t1][q6]!=d2)B1(r,c,g6);p3=9}}function B7(){var i,j=1,k,g2=k4=0,k8=new Date(),v4,n7,s,h,l3,i7=g3+g5,t9=i5.name;if(B5()){i=s6[r7]("?date=");while(s6[k6](p3*2)!=o1[k6](0)&&s6[k6](17)!=m3[k6](0)&&s6[k6](1)!=o1[k6](0))i++;n7=i+1?s6[m3](i+6,8):x;v4=Math.ceil((k8.getTime()/100000-11176092)/864);if(v4<1)v4=1;do{r1=x+k8.getFullYear();s=k8.getMonth();if(s<9)r1+="0";r1+=s+1;if(!k4)l=r1;s=k8.getDate();if(s<10)r1+="0";r1+=s;v4--;r4.forms['fa'].ai.options[j++]=new Option(K(r1,!k4,1),r1+v4);g2=n7==r1?r1+v4:g2==x?r1+v4:g2;k8.setDate(k8.getDate()-1);k4++}while(v4>0&&k4<62);g=k9*g1+e2[h8](0)+m3[h8](0)+q6[h8](0)+n9[h8](0)+o1[h8](0)+d2[h8](0);i=s6[r7](f8);if(i>-1){n7=s6[m3](i+5);if(n7[s3]>0){o3=1;s=n7[m3](0,81).replace(/0/g,g5);while(s[s3]<81)s+=g5;f6[0]=m6[0]=s;A1("t0",e2)}}else if(t9[m3](0,4)==n6){n=t9[m3](4,1)-0;Y("pc")[f5]=(t9[m3](6,1)=="1");Y("ck")[f5]=(t9[m3](7,1)=="1");u3=t9[m3](8,8);for(i=0;i<5;i++){f6[i]=m6[i]=x;l3=16+i*81;for(j=l3;j<l3+81;j++){h=t9[k6](j);if(i7[r7](h)>-1){f6[i]+=h;m6[i]+=h}if(u6[r7](h)>-1){f6[i]+="-";m6[i]+=g3[k6](h[h8](0)-65)}}}i5.name=x}else A6(g2)}}function L(i){if(B5()&&i){A6(i);A1("t0",e4);o3=0;for(i=0;i<5;i++){h5[i]=x;t[i]=e9[i]=0}M();B9();B6()}}function A6(i){var j=e6=h6=0,i8=1,k,h,s,q2,i9,o,r2,l9=x,u5=new Array(0,2,7,6,9,1,5,4,3,8);u3=i[m3](0,8);i=i[m3](8)-0;q2=parseInt(i/426);i%=426;if(q2){do{if(i8&1)i8=(i8>>1)^272;else i8=i8>>1;if(i8<427)if(e6++==i){i=i8-1;h6=1}}while(i8-1&&!h6)}while(Y(j1)[o1]!=j1)i++;for(k=0;k<pz[i][s3];k++){o=0;r2=0;h=pz[i][k6](k);if(h==g5)r2=1;else{i9=o4[r7](h);if(i9>-1){o=i9%9+1;r2=parseInt(i9/9)}else{i9=l4[r7](h);if(i9!=-1)r2=i9+1}}while(r2--)l9+=g5;if(o){for(s=0;s<q2;s++)o=u5[o];l9+=o}if(l9[s3]==81){f6[j]=m6[j]=l9;l9=x;j++}}}function K(r1,l8,t4){var r6=x,q1;if(r1[s3]==8){q1=r1[m3](6,2)-0;g1=(q1%4==0||q1%100!=4)?29:28;r6=(t4?o6[l8>0?7:new Date(r1[m3](0,4),r1[m3](4,2)-1,r1[m3](6,2)).getDay()]+", ":x)+Z(i1,(i6&&q1<10?"0":x)+(v1?q1+["th","st","nd","rd"][!(q1>10&&q1<14||q1%10>3)*q1%10]:q1),o6[r1[m3](4,2)-1+8],r1[m3](0,4))}return r6}function B9(){var i=K(u3,0,z),j=s6[r7]("?date=*"),k=s6[h8](17)!=p9[h8](9)?s6[h8](21)!=p9[h8](9)?s6[k6](3)!=s3[k6](1)?0:j:j:j;do{A("c1",i);A("c2",i);i++;k++}while(k)}function W(){Y("lk").href=(z<1?"index":"sudoku-"+(z<2?"medium":"large"))+".html"+f8+B2()}function I(s){h5[n]+=s+"<br>";A2()}function A2(){if(r8)m4[o1]=h5[n];else{m4.open();m4.write(u8+h5[n]);m4.close()}}function C5(s){if(r8)j4[o1]=s;else{j4.open();j4.write(u8+s);j4.close()}}function A3(){var r,c,n2=i2=x,d9=new Array(37,45,55,12,18,24),o7=(r4.all)?11:12,t3=(r4.all)?8:10,j3=" 2px solid;",n5="background-color:"+g6;for(r=0;r<9;r++)for(c=0;c<9;c++){n2+=q9+c*d9[z]+"px;top:"+r*d9[z]+"px;width:"+(d9[z]-2)+"px;height:"+(d9[z]-2)+"px;border-top:"+(r%3?h3:"#000")+j3+(r>7?"border-bottom:#000"+j3:x)+"border-left:"+(c%3?h3:"#000")+j3+(c>7?"border-right:#000"+j3:x)+n5+";' id='g"+r+c+"'></div>";i2+=q9+(o7+c*d9[z])+"px;top:"+(t3+r*d9[z])+"px;'><input style='border:0;width:"+(d9[z]-21)+"px;font:bold "+d9[z+3]+p9+"text-align:center;vertical-align:middle;"+(k7?n5:x)+"' type='text' id='"+r+c+"' size='1' maxlength='1' onKeyUp='G(event,"+r+","+c+")'></div>"}A("gd",n2+i2);for(r=0;r<9;r++)for(c=0;c<9;c++)l5[r*9+c]=Y(x+r+c)}function E(i){var j="mai";j+="lto:";j+=i-1?"comments@"+"sudokuhints.com":document.eMailer.email.value;j+=i?"?subject=":x;j+=i-1?x:escape(m7)+"&body="+escape(i3+s6);j+=i-2?x:m1;i5.location=j}function C8(){var r,c,s2=x,d9=new Array(37,45,55,26,32,40),j3="color:#000;",q8="px;font:"+(z+7)+p9;for(r=0;r<9;r++)for(c=0;c<9;c++)s2+=q9+(4+c*d9[z])+"px;top:"+(2+r*d9[z])+q8+(k7?j3:x)+"' id='"+"u"+r+c+"'></div>"+q9+(5+c*d9[z])+"px;top:"+(d9[z+3]+r*d9[z])+q8+(k7?j3:x)+"' id='"+"l"+r+c+"'></div>";A("nb",s2);r9=1}function Q(){var r3=Y("pc")[f5];if(s9){if(!r9)C8();A1("nb",(r3)?e4:e2);if(r3)C9()}}function G(r5,r,c){var f7,t7=p2=0,p8=r,v6=c,e8;var h;if(u7){O();f7=r5.charCode?r5.charCode:r5.keyCode;if(f7>36&&f7<41){if(f7%2)p2=f7-29;else t7=f7-30;do{p8=(p8+t7)%9;v6=(v6+p2)%9;e8=p8*9+v6}while(f6[n][k6](e8)==l5[e8][n9]&&(p8-r||v6-c));l5[e8].select()}else{h=l5[r*9+c][n9];if(h&&g3[r7](h)<0)l5[r*9+c][n9]=h=x;if(!h&&b[r][c]){A9(r,c,-b[r][c]);C4()}else if(b[r][c]!=h){F(r,c,h);A9(r,c,h)}A8();C9();W()}}}function J(v9){var q5=x,i=s6[r7](f8),j,h;if(s9){if(i<0){i5.name=n6+n+z+(Y("pc")[f5]?"1":"0")+(Y("ck")[f5]?"1":"0")+u3;m6[n]=B2();for(i=0;i<5;i++)for(j=0;j<81;j++){h=m6[i][k6](j);i5.name+=(h==f6[i][k6](j))?h:(h=="-"?h:u6[k6](h[h8](0)-49))}}else v9.href+=s6[m3](i)}}function T(u1){Y("a"+u1).blur();if(s9){if(u1>4){Y("a5").className=u1==5?"a0":"a1";Y("a6").className=u1==6?"a0":"a1";Y("st").height=u1==5?51:400}else if(u1-n){m6[n]=B2();n=u1;B6();M()}}return false}function B6(){var i;for(i=0;i<5;i++)Y("a"+i).className=i==n?"a0":"a1";if(!o3)A("d1",m5+": "+f2[n]);if(B5())A4();C5(x);A2();V(1);if(Y("pc")[f5])Q();W()}function C6(){var i,g7,f3=new Array(326,407,497,77,96,116);g7=Y("bd")[t1];g7.width=g7.height=f3[z]+"px";for(i=1;i<9;i++)Y("b"+i)[t1].width=f3[z+3]+"px";B9()}function A4(){var r,c,i,h;j6=u7=0;for(r=0;r<9;r++)for(c=0;c<9;c++){b[r][c]=0;for(i=1;i<10;i++)e[r][c][i]=1}r=c=0;for(i=0;i<81&&l<g;i++){h=m6[n][k6](i);h==g5?h=x:F(r,c,h);l5[i][n9]=h;l5[i][t1].color=f6[n][k6](i)==h?"#000":"#00c";if(++c>8){c=0;r++}}u7=1}function C4(){var r,c,h;for(r=0;r<9;r++)for(c=0;c<9;c++){B1(r,c,g6);b[r][c]=0;for(i=1;i<10;i++)e[r][c][i]=1}j6=0;for(r=0;r<9;r++)for(c=0;c<9;c++){h=l5[r*9+c][n9];if(h)F(r,c,h)}}function F(r,c,o){var rr,cc,i;for(i=0;i<9;i++)e[r][i][o]=e[i][c][o]=0;for(rr=p[r];rr<p[r]+3;rr++)for(cc=p[c];cc<p[c]+3;cc++)e[rr][cc][o]=0;for(i=1;i<=9;i++)e[r][c][i]=0;e[r][c][o]=1;b[r][c]=o;j6++}function C9(){var r,c,i,s,v8;if(!r9)C8();if(Y("pc")[f5])for(r=0;r<9;r++)for(c=0;c<9;c++){s=v8=x;if(!b[r][c])for(i=1;i<=9;i++)if(e[r][c][i])s[s3]<6?s+=i:v8+=i;A("u"+r+c,s);A("l"+r+c,v8)}}function B2(){var i,h,s=x;for(i=0;i<81;i++){h=l5[i][n9];s+=h?h:g5}return s}function A7(i){return i?p7+i+(i-1?n1:v5):f9}function H(n4){var r,c;if(s9){O();if(C2()){u7=0;for(r=p[d1];r<p[d1]+3;r++)for(c=p[w4];c<p[w4]+3;c++)if(l5[r*9+c][t1][q6]!=d2)B1(r,c,e3);C5(Z(n4?j2:u4,n4?j5:n3,n3).replace(l7,v2));p3=p[d1];h4=p3+2;m8=p[w4];d3=m8+2;u7=1}else C5(A7(81-j6))}}function S(e7){var s,l1=0;if(s9){O();u7=0;while(!l1&&C2()){F(d1,w4,j5);l5[d1*9+w4][n9]=j5;A9(d1,w4,j5);if(e7){B1(d1,w4,e3);p3=h4=d1;m8=d3=w4;l1=1}s=Z(d7,j5,n3,D(d1,w4),m2).replace(l7,v2);C5(e7?s:x);I(s)}u7=1;C9();W();if(!l1){C5(s=A7(81-j6));I(s)}}}function C3(){var r,c,i;e=new Array(9);for(r=0;r<9;r++){e[r]=new Array(9);for(c=0;c<9;c++){e[r][c]=new Array(10);for(i=1;i<10;i++)e[r][c][i]=1}}j1+=g3[k6](0);b=new Array(9);for(r=0;r<9;r++){b[r]=new Array(9);for(c=0;c<9;c++)b[r][c]=0}k9=(9*3)<<8;p6=new Array(5);for(i=0;i<5;i++){p6[i]=new Array(243);t[i]=e9[i]=0;h5[i]=x}j1+=j1+k6[k6](0)+2;while(!Y(j1))i++;if(i5.frames&&i5.frames["st"]){j4=i5.frames["st"].window.document;m4=i5.frames["rs"].window.document;r8=0}else if(r4.frames){j4=r4.frames("st").document.body;m4=r4.frames("rs").document.body}else if(Y("rs")[d8]){Y("st").height=21;j4=Y("st")[d8].body;m4=Y("rs")[d8].body}if(r8)j4[t1].font=m4[t1].font="normal 10"+p9}function A5(r,c,o,s,i,j,u,v8){return(e[r][c][o]?s:x)+(e[r][c][o]&&e[i][j][u]?p1:x)+(e[i][j][u]?v8:x)}function B4(r,c,o,s,i,j,u,v8,rr,cc,u9,q3){return(e[r][c][o]?(s+(e[i][j][u]&&e[rr][cc][u9]?", ":(e[i][j][u]||e[rr][cc][u9])?p1:x)):x)+A5(i,j,u,v8,rr,cc,u9,q3)}function C7(i,j,k,r,o,u,u9){var h=", ",s=e[j][o][i]?D(j,o)+h:x;s+=e[j][u][i]?D(j,u)+h:x;s+=e[j][u9][i]?D(j,u9)+h:x;s+=e[k][o][i]?D(k,o)+h:x;s+=e[k][u][i]?D(k,u)+h:x;s+=e[k][u9][i]?D(k,u9)+h:x;s+=e[r][o][i]?D(r,o)+h:x;s+=e[r][u][i]?D(r,u)+h:x;s+=e[r][u9][i]?D(r,u9)+h:x;s=s[m3](0,s[s3]-2);return s}function D(i,j){return " "+t8+(i+1)+m9+(j+1)}function C1(m,j){var i=0;while(j>0){if(m&256)j--;m=m<<1;i++}return i}function Z(s){var i,j=s.split("$"),v8=j[0];for(i=1;i<j[s3];i++)v8+=arguments[i]+j[i];return v8}function N(j){var i;for(i=0;j;i++)j&=j-1;return i}function C2(){var r,c,rr,cc,i,j,k,d4,g9=0,v,q7,j7,f4,w1,d,f,w3,l2,w2,g4,q=new Array(0,3,6),p4=new Array(1,1,1,2,2,2,3,3,3),t5=new Array(0,0,0),m,h7,g8,a,y=new Array(9),k3=new Array(9),w,o,u,u9;if(j6<81){do{for(d=0;d<3&&!g9;d++)for(f=0;f<3&&!g9;f++)for(i=1;i<=9&&!g9;i++){d4=w2=g4=0;for(r=q[d];r<q[d]+3;r++)for(c=q[f];c<q[f]+3;c++)if(e[r][c][i]){d4++;w2=r;g4=c}if(d4==1&&!b[w2][g4]){g9=1;n3=d*3+f+1;d1=w2;w4=g4;j5=i;m2=f1}}for(r=0;r<9&&!g9;r++)for(i=1;i<=9&&!g9;i++){d4=0;for(c=0;c<9;c++)if(e[r][c][i]){d4++;g4=c}if(d4==1&&!b[r][g4]){g9=1;n3=p[r]+p4[g4];d1=r;w4=g4;j5=i;m2=d5}}for(c=0;c<9&&!g9;c++)for(i=1;i<=9&&!g9;i++){d4=0;for(r=0;r<9;r++)if(e[r][c][i]){d4++;w2=r}if(d4==1&&!b[w2][c]){g9=1;n3=p[w2]+p4[c];d1=w2;w4=c;j5=i;m2=k2}}for(r=0;r<9&&!g9;r++)for(c=0;c<9&&!g9;c++)if(!b[r][c]){d4=0;for(i=1;i<=9&&!g9;i++)d4+=e[r][c][i];if(d4==1){i=1;while(i<9&&!e[r][c][i])i++;g9=1;n3=p[r]+p4[c];d1=r;w4=c;j5=i;m2=j8}}if(!g9){v=0;m=new Array(9);for(r=0;r<9;r++){m[r]=new Array(9);for(c=0;c<9;c++){g8=0;for(i=1;i<=9;i++)g8=(g8<<1)|(!b[r][c]&&e[r][c][i]);m[r][c]=g8}}for(r=0;r<9&&!v;r++){w=0;for(c=0;c<9;c++)if(!b[r][c])y[w++]=c;for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++){a=m[r][y[i]]|m[r][y[j]];if(N(a)==2){o=C1(a,1);u=C1(a,2);for(cc=0;cc<9;cc++)if(cc-y[i]&&cc-y[j])if(a&m[r][cc]){I(Z(s1,o,u,D(r,y[i]),D(r,y[j]),A5(r,cc,o,o,r,cc,u,u),D(r,cc)));e[r][cc][o]=e[r][cc][u]=0;v=1}}}}for(c=0;c<9&&!v;c++){w=0;for(r=0;r<9;r++)if(!b[r][c])y[w++]=r;for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++){a=m[y[i]][c]|m[y[j]][c];if(N(a)==2){o=C1(a,1);u=C1(a,2);for(rr=0;rr<9;rr++)if(rr-y[i]&&rr-y[j])if(a&m[rr][c]){I(Z(s1,o,u,D(y[i],c),D(y[j],c),A5(rr,c,o,o,rr,c,u,u),D(rr,c)));e[rr][c][o]=e[rr][c][u]=0;v=1}}}}for(d=0;d<3&&!v;d++)for(f=0;f<3&&!v;f++){w=0;for(r=q[d];r<q[d]+3;r++)for(c=q[f];c<q[f]+3;c++)if(!b[r][c]){y[w]=r;k3[w]=c;w++}for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++){a=m[y[i]][k3[i]]|m[y[j]][k3[j]];if(N(a)==2){o=C1(a,1);u=C1(a,2);for(rr=q[d];rr<q[d]+3;rr++)for(cc=q[f];cc<q[f]+3;cc++)if((rr-y[i]||cc-k3[i])&&(rr-y[j]||cc-k3[j]))if(a&m[rr][cc]){I(Z(s1,o,u,D(y[i],k3[i]),D(y[j],k3[j]),A5(rr,cc,o,o,rr,cc,u,u),D(rr,cc)));e[rr][cc][o]=e[rr][cc][u]=0;v=1}}}}for(r=0;r<9&&!v;r++)for(i=1;i<=9&&!v;i++){d4=f4=0;while(f4<9&&!e[r][f4][i])f4++;w1=8;while(w1>=0&&!e[r][w1][i])w1--;if(w1>f4&&p[f4]==p[w1])for(rr=p[r];rr<p[r]+3;rr++)for(cc=p[f4];cc<p[f4]+3;cc++)if(rr-r)if(e[rr][cc][i]){I(Z(v3,i,r+1,p[r]+p4[cc],i,D(rr,cc)));e[rr][cc][i]=0;v=1}}for(c=0;c<9&&!v;c++)for(i=1;i<=9&&!v;i++){d4=q7=0;while(q7<9&&!e[q7][c][i])q7++;j7=8;while(j7>=0&&!e[j7][c][i])j7--;if(j7>q7&&p[q7]==p[j7])for(rr=p[q7];rr<p[q7]+3;rr++)for(cc=p[c];cc<p[c]+3;cc++)if(cc-c)if(e[rr][cc][i]){I(Z(l6,i,c+1,p[rr]+p4[c],i,D(rr,cc)));e[rr][cc][i]=0;v=1}}for(d=0;d<3&&!v;d++)for(f=0;f<3&&!v;f++)for(i=1;i<=9&&!v;i++){t5[0]=t5[1]=t5[2]=0;for(w3=0;w3<3;w3++)for(c=q[f];c<q[f]+3;c++)if(e[w3+q[d]][c][i])t5[w3]=1;if(t5[0]+t5[1]+t5[2]==1){r=0;while(t5[r]-1)r++;r+=q[d];for(c=0;c<9;c++)if(c<q[f]||c>q[f]+2)if(e[r][c][i]){I(Z(s4,i,d*3+f+1,r+1,i,D(r,c)));e[r][c][i]=0;v=1}}}for(d=0;d<3&&!v;d++)for(f=0;f<3&&!v;f++)for(i=1;i<=9&&!v;i++){t5[0]=t5[1]=t5[2]=0;for(l2=0;l2<3;l2++)for(r=q[d];r<q[d]+3;r++)if(e[r][l2+q[f]][i])t5[l2]=1;if(t5[0]+t5[1]+t5[2]==1){c=0;while(t5[c]-1)c++;c+=q[f];for(r=0;r<9;r++)if(r<q[d]||r>q[d]+2)if(e[r][c][i]){I(Z(t2,i,d*3+f+1,c+1,i,D(r,c)));e[r][c][i]=0;v=1}}}h7=new Array(9);for(r=0;r<9&&!v;r++){h7[r]=new Array(10);for(i=1;i<=9;i++){g8=0;for(c=0;c<9;c++)g8=(g8<<1)|(!b[r][c]&&e[r][c][i]);h7[r][i]=g8}}for(i=1;i<=9&&!v;i++){w=0;for(r=0;r<9;r++)if(h7[r][i])y[w++]=r;for(j=0;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++){a=h7[y[j]][i]|h7[y[k]][i];if(N(a)==2){o=C1(a,1)-1;u=C1(a,2)-1;for(rr=0;rr<9;rr++)if(rr-y[j]&&rr-y[k])if(a&h7[rr][i]){I(Z(o2,i,D(y[j],o),D(y[j],u),D(y[k],o),D(y[k],u),i,A5(rr,o,i,D(rr,o),rr,u,i,D(rr,u))));e[rr][o][i]=e[rr][u][i]=0;v=1}}}}for(c=0;c<9&&!v;c++)for(i=1;i<=9;i++){g8=0;for(r=0;r<9;r++)g8=(g8<<1)|(!b[r][c]&&e[r][c][i]);h7[c][i]=g8}for(i=1;i<=9&&!v;i++){w=0;for(c=0;c<9;c++)if(h7[c][i])y[w++]=c;for(j=0;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++){a=h7[y[j]][i]|h7[y[k]][i];if(N(a)==2){o=C1(a,1)-1;u=C1(a,2)-1;for(cc=0;cc<9;cc++)if(cc-y[j]&&cc-y[k])if(a&h7[cc][i]){I(Z(o2,i,D(o,y[j]),D(u,y[j]),D(o,y[k]),D(u,y[k]),i,A5(o,cc,i,D(o,cc),u,cc,i,D(u,cc))));e[o][cc][i]=e[u][cc][i]=0;v=1}}}}for(r=0;r<9&&!v;r++){w=0;for(c=0;c<9;c++)if(!b[r][c])y[w++]=c;for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++){a=m[r][y[i]]|m[r][y[j]]|m[r][y[k]];if(N(a)==3){o=C1(a,1);u=C1(a,2);u9=C1(a,3);for(cc=0;cc<9;cc++)if(cc-y[i]&&cc-y[j]&&cc-y[k])if(a&m[r][cc]){I(Z(s5,o,u,u9,D(r,y[i]),D(r,y[j]),D(r,y[k]),B4(r,cc,o,o,r,cc,u,u,r,cc,u9,u9),D(r,cc)));e[r][cc][o]=e[r][cc][u]=e[r][cc][u9]=0;v=1}}}}for(c=0;c<9&&!v;c++){w=0;for(r=0;r<9;r++)if(!b[r][c])y[w++]=r;for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++){a=m[y[i]][c]|m[y[j]][c]|m[y[k]][c];if(N(a)==3){o=C1(a,1);u=C1(a,2);u9=C1(a,3);for(rr=0;rr<9;rr++)if(rr-y[i]&&rr-y[j]&&rr-y[k])if(a&m[rr][c]){I(Z(s5,o,u,u9,D(y[i],c),D(y[j],c),D(y[k],c),B4(rr,c,o,o,rr,c,u,u,rr,c,u9,u9),D(rr,c)));e[rr][c][o]=e[rr][c][u]=e[rr][c][u9]=0;v=1}}}}for(d=0;d<3&&!v;d++)for(f=0;f<3&&!v;f++){w=0;for(r=q[d];r<q[d]+3;r++)for(c=q[f];c<q[f]+3;c++)if(!b[r][c]){y[w]=r;k3[w]=c;w++}for(i=0;i<w&&!v;i++)for(j=i+1;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++){a=m[y[i]][k3[i]]|m[y[j]][k3[j]]|m[y[k]][k3[k]];if(N(a)==3){o=C1(a,1);u=C1(a,2);u9=C1(a,3);for(rr=q[d];rr<q[d]+3;rr++)for(cc=q[f];cc<q[f]+3;cc++)if((rr-y[i]||cc-k3[i])&&(rr-y[j]||cc-k3[j])&&(rr-y[k]||cc-k3[k]))if(a&m[rr][cc]){I(Z(s5,o,u,u9,D(y[i],k3[i]),D(y[j],k3[j]),D(y[k],k3[k]),B4(rr,cc,o,o,rr,cc,u,u,rr,cc,u9,u9),D(rr,cc)));e[rr][cc][o]=e[rr][cc][u]=e[rr][cc][u9]=0;v=1}}}}for(r=0;r<9&&!v;r++)for(i=1;i<=9;i++){g8=0;for(c=0;c<9;c++)g8=(g8<<1)|(!b[r][c]&&e[r][c][i]);h7[r][i]=g8}for(i=1;i<=9&&!v;i++){w=0;for(r=0;r<9;r++)if(h7[r][i])y[w++]=r;for(j=0;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++)for(r=k+1;r<w&&!v;r++){a=h7[y[j]][i]|h7[y[k]][i]|h7[y[r]][i];if(N(a)==3){o=C1(a,1)-1;u=C1(a,2)-1;u9=C1(a,3)-1;for(rr=0;rr<9;rr++)if(rr-y[j]&&rr-y[k]&&rr-y[r])if(a&h7[rr][i]){I(Z(t6,i,C7(i,y[j],y[k],y[r],o,u,u9),i,B4(rr,o,i,D(rr,o),rr,u,i,D(rr,u),rr,u9,i,D(rr,u9))));e[rr][o][i]=e[rr][u][i]=e[rr][u9][i]=0;v=1}}}}for(c=0;c<9&&!v;c++)for(i=1;i<=9;i++){g8=0;for(r=0;r<9;r++)g8=(g8<<1)|(!b[r][c]&&e[r][c][i]);h7[c][i]=g8}for(i=1;i<=9&&!v;i++){w=0;for(c=0;c<9;c++)if(h7[c][i])y[w++]=c;for(j=0;j<w&&!v;j++)for(k=j+1;k<w&&!v;k++)for(r=k+1;r<w&&!v;r++){a=h7[y[j]][i]|h7[y[k]][i]|h7[y[r]][i];if(N(a)==3){o=C1(a,1)-1;u=C1(a,2)-1;u9=C1(a,3)-1;for(cc=0;cc<9;cc++)if(cc-y[j]&&cc-y[k]&&cc-y[r])if(a&h7[cc][i]){I(Z(t6,i,C7(i,o,u,u9,y[j],y[k],y[r]),i,B4(o,cc,i,D(o,cc),u,cc,i,D(u,cc),u9,cc,i,D(u9,cc))));e[o][cc][i]=e[u][cc][i]=e[u9][cc][i]=0;v=1}}}}}}while(!g9&&v)}return g9}
