#include using namespace std; using ll=long long; using ld=double; using pll=pair; using vll=vector; using vpll=vector; using vvll=vector; #define FOR(i,a,b) for(ll i=a;i<(ll)b;++i) #define ROF(i,a,b) for(ll i=a;i>=(ll)b;--i) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define aa first #define bb second #define PB push_back #define BOARD 8 ld dp[BOARD*BOARD][BOARD*BOARD][2]; ll toll(ll x,ll y){ return y*BOARD+x; } pll fromll(ll l){ return {l%BOARD,l/BOARD}; } bool pok(ll x,ll y){ return !(x<0||x>7||y<0||y>7); } vpll moves={{-2,1},{-2,-1},{1,2},{1,-2},{2,-1},{2,1},{-1,2},{-1,-2}}; void dfs(ll white,ll black,ll who,ld prob){ //printf("%lld %lld %lld %lf\n",white,black,who,prob); if(prob<=1e-6-1e-9)return; if(white==black){ dp[white][black][!who]+=prob; return; } ll cur=who?white:black; const pll curpt=fromll(cur); vpll valid; for(auto& m:moves){ pll npt={curpt.aa+m.aa,curpt.bb+m.bb}; if(!pok(npt.aa,npt.bb))continue; valid.PB(npt); } for(auto& m:valid){ pll npt=m; ll n=toll(npt.aa,npt.bb); ld np=1.*prob/(valid.size()); if(who)dfs(n,black,!who,np); else dfs(white,n,!who,np); } } int main(){ ios::sync_with_stdio(0); ll wx,wy,bx,by; scanf("%lld%lld%lld%lld",&wx,&wy,&bx,&by); --wx,--wy,--bx,--by; dfs(toll(wx,wy),toll(bx,by),1,1.0); ld wp=0,bp=0; F(64)wp+=dp[i][i][1]; F(64)bp+=dp[i][i][0]; //printf("%.20lf %.20lf\n",wp,bp); if(fabs(wp-bp)<=1e-6)puts("draw"); else if(wp>bp)puts("white"); else puts("black"); return 0; }