ull r[100][100]; if(1){ Rand g; rep(y,100){ rep(x,100){ r[y][x]=(ull)g.get()<<32^g.get(); } } } char rbuf[1<<21],*rp=rbuf; read(0,rbuf,1<<21); auto rd=[&](){int _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;return _v;}; ll n=rd(); ll u=rd(); ll h=rd(); ll w=rd(); rp+=(2+h*(w+1))*n; ll best_v=-1; char* best_s=0; unordered_map m; rrep(i,n){ *rp=0; rp-=h*(w+1); char*p=rp; ull b=0; rep(y,h){ rep(x,w){ if(*p++=='#'){ b^=r[y][x]; } } ++p; } if(i=0){ best_s[by*(w+1)+bx]^='.'^'#'; } } rp-=2; } if(best_v<0){ char sbuf[10101]; best_v=-200; best_s=sbuf; rp+=2; rep(y,h){ rep(x,w){ rp[y*(w+1)+x]='.'; } } ull b=0; unsigned t=0; while(1){ ll v=m[b]; if(best_v=h){ break; } b^=r[y][x]; rp[y*(w+1)+x]^='.'^'#'; } } wt(best_v); wtN(best_s);