val Ġdata Ġ= Ġ" 3 1 5 6 7 9 8 2 4 " Ċ Ċ fun Ġfirst ( data : ĠString ): ĠAny ? Ġ{ ĊĠ Ġval Ġitems Ġ= Ġdata ĊĠĠĠ Ġ. trim () ĊĠĠĠ Ġ. map Ġ{ Ġit . toString (). toInt () Ġ} ĊĊĠ Ġval Ġqueue Ġ= ĠArray Deque ( items ) ĊĠ Ġval Ġmin Ġ= Ġqueue . min Of Ġ{ Ġit Ġ} ĊĠ Ġval Ġmax Ġ= Ġqueue . max Of Ġ{ Ġit Ġ} ĊĊĠ Ġrepeat ( 1 0 0 ) Ġ{ ĊĠĠĠ Ġval Ġhead Ġ= Ġqueue . remove First () ĊĠĠĠ Ġval Ġtriple Ġ= ĠlistOf ( queue . remove First (), Ġqueue . remove First (), Ġqueue . remove First ()) ĊĊĠĠĠ Ġvar Ġinsert Ġ= Ġhead Ġ- Ġ 1 ĊĠĠĠ Ġvar Ġposition Ġ= Ġqueue . indexOf ( insert ) ĊĠĠĠ Ġwhile Ġ( position Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠ Ġinsert -- ĊĠĠĠĠĠ Ġif Ġ( insert Ġ< Ġmin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinsert Ġ= Ġmax ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġposition Ġ= Ġqueue . indexOf ( insert ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtriple . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> Ġqueue . add ( position Ġ+ Ġindex Ġ+ Ġ 1 , Ġvalue ) Ġ} ĊĠĠĠ Ġqueue . add Last ( head ) ĊĠ Ġ} ĊĊĠ Ġval Ġpos 1 Ġ= Ġqueue . indexOf ( 1 ) ĊĠ Ġreturn Ġ( queue . drop ( pos 1 Ġ+ Ġ 1 ) Ġ+ Ġqueue . take ( pos 1 )). join ToString ("") Ċ } Ċ Ċ fun Ġsecond ( data : ĠString ): ĠAny ? Ġ{ ĊĠ Ġval Ġinitial Items Ġ= Ġdata ĊĠĠĠ Ġ. trim () ĊĠĠĠ Ġ. map Ġ{ Ġit . toString (). toInt () Ġ} ĊĊĠ Ġval Ġitems Ġ= Ġinitial Items Ġ+ Ġ(( initial Items . max Of Ġ{ Ġit Ġ} Ġ+ Ġ 1 ) .. 1 _ 0 0 0 _ 0 0 0 ). toList () ĊĊĠ Ġval Ġmin Ġ= Ġitems . min Of Ġ{ Ġit Ġ} ĊĠ Ġval Ġmax Ġ= Ġitems . max Of Ġ{ Ġit Ġ} ĊĊĠ Ġval Ġall Ġ= ĠList ( 1 _ 0 0 0 _ 0 0 0 Ġ+ Ġ 1 ) Ġ{ ĠItem ( it ) Ġ} ĊĊĠ Ġval Ġqueue Ġ= Ġitems . map Ġ{ Ġall [ it ] Ġ} ĊĠ Ġqueue . zip With Next (). forEach Ġ{ Ġ( prev , Ġnext ) Ġ-> ĊĠĠĠ Ġprev . next Ġ= Ġnext . value ĊĠ Ġ} ĊĠ Ġqueue . last (). next Ġ= Ġqueue . first (). value ĊĊĠ Ġvar Ġhead Ġ= Ġqueue . first () ĊĊĠ Ġrepeat ( 1 0 _ 0 0 0 _ 0 0 0 ) Ġ{ ĊĠĠĠ Ġval Ġtook Ġ= Ġ( 0 Ġuntil Ġ 3 ). scan ( head ) Ġ{ Ġacc , Ġ_ Ġ-> Ġall [ acc . next ] Ġ} ĊĠĠĠ Ġval Ġexcluded Ġ= Ġtook . map Ġ{ Ġit . value Ġ} ĊĠĠĠ Ġvar Ġplace Ġ= Ġhead . value Ġ- Ġ 1 ĊĠĠĠ Ġwhile Ġ( place Ġ< Ġmin Ġ|| Ġplace Ġin Ġexcluded ) Ġ{ ĊĠĠĠĠĠ Ġplace -- ĊĠĠĠĠĠ Ġif Ġ( place Ġ< Ġmin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplace Ġ= Ġmax ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnext Head Ġ= Ġtook [ 3 ]. next ĊĠĠĠ Ġval Ġinsertion Ġ= Ġall [ place ] ĊĠĠĠ Ġval Ġnext Ġ= Ġinsertion . next ĊĠĠĠ Ġinsertion . next Ġ= Ġtook [ 1 ]. value ĊĠĠĠ Ġtook [ 3 ]. next Ġ= Ġnext ĊĊĠĠĠ Ġhead . next Ġ= Ġnext Head ĊĠĠĠ Ġhead Ġ= Ġall [ next Head ] ĊĠ Ġ} ĊĊĠ Ġval Ġfirst Ġ= Ġall [ all [ 1 ]. next ] ĊĠ Ġval Ġsecond Ġ= Ġall [ first . next ] ĊĊĠ Ġreturn Ġfirst . value . to Long () Ġ* Ġsecond . value . to Long () Ċ } Ċ Ċ data Ġclass ĠItem ( ĊĠ Ġval Ġvalue : ĠInt , ĊĠ Ġvar Ġnext : ĠInt Ġ= Ġ 0 , Ċ ) Ċ Ċ fun Ġmain () Ġ{ ĊĠ Ġprintln (" First : Ġ${ first ( data )?. toString () Ġ?: Ġ" un solved "} ") ĊĠ Ġprintln (" Second : Ġ${ second ( data )?. toString () Ġ?: Ġ" un solved "} ") Ċ }