package Ġcom . on eli ang . k tx . util . common Ċ Ċ import Ġjava . util .* Ċ Ċ object ĠMath Util Ġ{ ĊĠĠĠ Ġfun Ġcalculate Piece ( number : ĠLong , Ġmod ulus : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcalculate Piece And Remain der ( number , Ġmod ulus ). first ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Piece ( number : ĠInt , Ġmod ulus : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcalculate Piece And Remain der ( number , Ġmod ulus ). first ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Remain der ( number : ĠLong , Ġmod ulus : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcalculate Piece And Remain der ( number , Ġmod ulus ). second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Remain der ( number : ĠInt , Ġmod ulus : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcalculate Piece And Remain der ( number , Ġmod ulus ). second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Piece And Remain der ( number : ĠInt , Ġmod ulus : ĠInt ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġcalculate Piece And Remain der ( number . to Long (), Ġmod ulus . to Long ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġpair . first . toInt () Ġto Ġpair . second . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Piece And Remain der ( number : ĠLong , Ġmod ulus : ĠLong ): ĠPair < Long , ĠLong > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( number Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" number Ġmust Ġ>= Ġ 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( modulus Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" modulus Ġmust Ġ> Ġ 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġremainder Ġ= Ġnumber Ġ% Ġmod ulus ĊĠĠĠĠĠĠĠ Ġval Ġpiece Ġ= Ġif Ġ( remainder Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ/ Ġmod ulus ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Ġ/ Ġmod ulus Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpiece Ġto Ġremainder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Compose ( total Size : ĠInt , Ġcompose Size : ĠInt , Ġoutput Index : ĠBoolean Ġ= Ġfalse ): ĠList < Array < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Array < Int >>() ĊĠĠĠĠĠĠĠ Ġcalculate Compose ( total Size , Ġcompose Size , Ġoutput Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġcalculate Compose ( array : ĠArray < T >, Ġcompose Size : ĠInt ): ĠList < Array < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Array < T >>() ĊĠĠĠĠĠĠĠ Ġcalculate Compose ( Stack (), Ġarray . size , Ġcompose Size , Ġ 0 , Ġ 0 , Ġtrue ) Ġ{ Ġindex Array Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġindex Array . to New Array Ġ{ Ġarray [ it ] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Compose ( total Size : ĠInt , Ġcompose Size : ĠInt , Ġblock : Ġ( Array < Int >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcalculate Compose ( Stack (), Ġtotal Size , Ġcompose Size , Ġ 0 , Ġ 0 , Ġfalse , Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Compose ( total Size : ĠInt , Ġcompose Size : ĠInt , Ġoutput Index : ĠBoolean Ġ= Ġfalse , Ġblock : Ġ( Array < Int >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcalculate Compose ( Stack (), Ġtotal Size , Ġcompose Size , Ġ 0 , Ġ 0 , Ġoutput Index , Ġblock ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Compose ( stack : ĠStack < Int >, Ġtotal Size : ĠInt , Ġcompose Size : ĠInt , Ġdepth : ĠInt , ĠstartIndex : ĠInt , Ġoutput Index : ĠBoolean Ġ= Ġfalse , Ġblock : Ġ( Array < Int >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( depth Ġ== Ġcompose Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock ( stack . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin ĠstartIndex Ġuntil Ġtotal Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack . push ( if Ġ( output Index ) Ġindex Ġelse Ġindex Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Compose ( stack , Ġtotal Size , Ġcompose Size , Ġdepth Ġ+ Ġ 1 , Ġindex Ġ+ Ġ 1 , Ġoutput Index , Ġblock ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack . pop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Index ( total Rows : ĠInt , Ġrows PerPage : ĠInt , ĠcurrentPage : ĠInt ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Index Ġ= Ġ( currentPage Ġ- Ġ 1 ) Ġ* Ġrows PerPage ĊĠĠĠĠĠĠĠ Ġval Ġto Index Ġ= Ġif Ġ( currentPage Ġ* Ġrows PerPage Ġ>= Ġtotal Rows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Rows ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentPage Ġ* Ġrows PerPage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfrom Index Ġto Ġto Index ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġcalculate Per mutation ( array : ĠArray < T >, ĠstartIndex : ĠInt Ġ= Ġ 0 ): ĠList < Array < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Array < T >>() ĊĠĠĠĠĠĠĠ Ġcalculate Per mutation ( array , ĠstartIndex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġcalculate Per mutation ( array : ĠArray < T >, ĠstartIndex : ĠInt Ġ= Ġ 0 , Ġblock : Ġ( Array < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( startIndex Ġ== Ġarray . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġblock ( array . copyOf ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin ĠstartIndex Ġuntil Ġarray . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray . swap ( i , ĠstartIndex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate Per mutation ( array , ĠstartIndex Ġ+ Ġ 1 , Ġblock ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray . swap ( startIndex , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġarray Ġ= ĠarrayOf (" A ", Ġ" B ", Ġ" C ", Ġ" D ", Ġ" E ") Ċ Ċ }