private Ġfun Ġread Line () Ġ= Ġkotlin . io . readLine () !! č Ċ private Ġfun Ġread Int () Ġ= Ġread Line (). toInt () č Ċ private Ġfun Ġread Ints () Ġ= Ġread Line (). split (" Ġ"). map Ġ{ Ġit . toInt () Ġ} čĊč Ċ late init Ġvar Ġdp : ĠArray < IntArray > čĊč Ċ fun Ġsolve ( i : ĠInt , Ġj : ĠInt , Ġn : ĠInt , Ġm : ĠInt , Ġcurr : ĠInt ): ĠBoolean Ġ{ čĊĠĠĠ Ġif Ġ( i Ġ<= Ġ 0 Ġ|| Ġj Ġ<= Ġ 0 Ġ|| Ġi Ġ> Ġn Ġ|| Ġj Ġ> Ġm ) Ġreturn Ġfalse čĊĠĠĠ Ġif Ġ( dp [ i ][ j ] Ġ!= Ġ- 1 ) Ġreturn Ġdp [ i ][ j ] Ġ!= Ġ 0 čĊĠĠĠ Ġif Ġ( i Ġ== Ġn Ġ&& Ġj Ġ== Ġm ) Ġreturn Ġcurr Ġ== Ġ 0 čĊĠĠĠ Ġif Ġ( solve ( i Ġ+ Ġ 1 , Ġj , Ġn , Ġm , Ġcurr Ġ- Ġj ) Ġ|| Ġsolve ( i , Ġj Ġ+ Ġ 1 , Ġn , Ġm , Ġcurr Ġ- Ġi )) Ġ{ čĊĠĠĠĠĠĠĠ Ġdp [ i ][ j ] Ġ= Ġ 1 čĊĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠ Ġ} čĊĠĠĠ Ġdp [ i ][ j ] Ġ= Ġ 0 čĊĠĠĠ Ġreturn Ġfalse č Ċ } čĊč Ċ fun Ġmain () Ġ{ čĊĠĠĠ Ġval Ġtest Cases Ġ= Ġread Int () čĊĠĠĠ Ġfor Ġ( testCase Ġin Ġ 0 Ġuntil Ġtest Cases ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġread Ints () čĊĠĠĠĠĠĠĠ Ġdp Ġ= ĠArray ( arr [ 0 ] Ġ+ Ġ 1 ) Ġ{ ĠInt Array ( arr [ 1 ] Ġ+ Ġ 1 ) Ġ{ Ġ- 1 Ġ} Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġgood Ġ= Ġsolve ( 1 , Ġ 1 , Ġarr [ 0 ], Ġarr [ 1 ], Ġarr [ 2 ]) čĊĠĠĠĠĠĠĠ Ġprintln ( if Ġ( good ) Ġ" YES " Ġelse Ġ" NO ") čĊĠĠĠ Ġ} č Ċ } čĊ