/**************************************************************************\
| Toledo Nanochess (c) Copyright 2009 Oscar Toledo G. All rights reserved  |
| 1270 non-blank characters. Evolution from my winning IOCCC 2005 entry.   |
| o Use D2D4 algebraic style for movements.  biyubi@gmail.com  Mar/25/2009 |
| o On promotion add a number for final piece (3=N, 4=B, 5=R, 6=Q)         |
| o Press Enter alone for computer to play.                                |
| o Full legal chess moves.                     http://nanochess.110mb.com |
| o Remove these comments to get 1336 bytes source code (*NIX end-of-line) |
\**************************************************************************/
char*l="ustvrtsuqqqqqqqqyyyyyyyy}{|~z|{}"
"   76Lsabcddcba .pknbrq  PKNBRQ ?A6J57IKJT576,+-48HLSU";
#define F getchar()&z
#define v X(21,0,0,0,
#define Z while(
#define _ ;if(
#define P return y^=8,
B,i,y,u,b,I[411],*G=I,x=10,z=15,M=1e4;X(f,w,c,h,e,S,s){int t,o,L,E,d,O=f,N=-M*M
,K=78-h<<x,p,*g,n,*m,A,q,r,C,J,a=y?-x:x;y^=8;d=w||s&&v 0,1,0)>M;G[h+1]=*G;do{_
o=I[p=O]){q=o&z^y _ q<7){A=q--&2?8:4;C=o-9&z?q["& .$  "]:42;do{r=I[p+=C[l]-64]_
!w|p==w&&q|A>2|!r){g=q|p+a-e?0:I+e _!r&(q|A<3||g)||(r+1&z^y)>9){m=0 _!(r-2&7))P
G[h]=O,K;n=o&z;J=I[p-a]&z;t=q|J-7?n:(n+=2,6^y);Z n<=t){p[I]=n,E=O[I]=m?*g=*m,*m
=0:g?*g=0:0;L=(1-q?l[p/x+5]-l[O/x+5]+l[p%x+6]-l[O%x+6]+o/16*8:!!m*9)+(q?0:l[p%x
+6]-98+!(I[p-1]^n)+!(I[p+1]^n)+l[n&7]*9-288+!!g*99+(A<2&&(E=p)))+(r?l[r&7]*9-
189-h-q:0)+!(J^y^9)_ s>h||s==h&(L>z&1<s|d))L-=X(G[h+1],s>h|d?0:p,L,h+1,E,N,s)_!
(h||S|B-O|i-n|p-b|L<-M))return u=E;J=q-1|A<7||m||!s|d|r|o<z||v 0,1,0)>M;O[I]=o;
p[I]=r;m?*m=*g,*g=0:g?*g=9^y:0 _ L>N){N=L;G[h]=O _!h&s>1)i=n,B=O,b=p _ h&&c-L<S
)P L;}n+=J||(g=I+p,m=p<O?g-3:g+2,*m<z|I[p+=p-O]|m[p<O?1:-1]);}}}}Z!r&q>2||(p=O,
q|A>2|o>z&!r&&++C&&--A));}}}Z++O>98?O=20:f-O);P N+M*M&&N>-K+1924|d?N:0;}main(){
Z++B<121)*G++=B/x%x<2|B%x<2?7:B/x&4?0:*l++&31;Z B=19){Z B++<99)putchar(B%x?l[B[
I]|16]:x)_ x-(B=F)){i=I[B+=(x-F)*x]&z;b=F;b+=(x-F)*x;Z x-(*G=F))i=*G^8^y;}else
v u,1,5);v u,0,1);}}
