class ĠResult ( val Ġinput : ĠInt ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ remainder Ġ= Ġinput ĊĠĠĠ Ġval Ġremainder : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ remainder ĊĊĠĠĠ Ġprivate Ġval Ġ_ list Ġ= ĠArrayList < Int >() ĊĠĠĠ Ġval Ġlist : ĠIterable < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ list ĊĊĠĠĠ Ġfun Ġsplit ( factor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! can Be Factor ized ( factor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd ToList ( factor ) ĊĠĠĠĠĠĠĠ Ġremove From Number ( factor ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsplit ( factor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnext ( factor : ĠInt ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠResult ( input ) ĊĠĠĠĠĠĠĠ Ġresult ._ list . addAll ( list ) ĊĠĠĠĠĠĠĠ Ġresult ._ remainder Ġ= Ġremainder ĊĠĠĠĠĠĠĠ Ġresult . split ( factor ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove From Number ( factor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ remainder Ġ/= Ġfactor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ToList ( factor : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ list . add ( factor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcan Be Factor ized ( factor : ĠInt ) Ġ= Ġremainder Ġ% Ġfactor Ġ== Ġ 0 Ċ Ċ }