package Ġstep ik . sport programming Ċ Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . util .* Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġoutput Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġread Int () ĊĠĠĠĠĠĠĠ Ġval Ġsub sets Ġ= Ġmutable ListOf < Subset >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( mask Ġin Ġ 0 Ġuntil Ġ( 1 Ġshl Ġn )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubset Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mask Ġand Ġ( 1 Ġshl Ġi ) Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubset . add ( i + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsub sets . add ( Subset ( subset )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsub sets . sort () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. sub sets . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ i ) Ġ${ sub sets [ i Ġ- Ġ 1 ]. subset }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠSub set ( val Ġsubset : ĠList < Int >): ĠComparable < Subset > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠSub set ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġmin Of ( this . subset . size , Ġother . subset . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . subset [ i ] Ġ< Ġother . subset [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this . subset [ i ] Ġ> Ġother . subset [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġother . subset . size Ġ- Ġthis . subset . size ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** ĠIO Ġcode Ġstart Ġ*/ Ċ private Ġval ĠINPUT Ġ= ĠSystem .` in ` Ċ private Ġval ĠOUTPUT Ġ= ĠSystem . out Ċ Ċ private Ġval Ġreader Ġ= ĠINPUT . buffered Reader () Ċ private Ġvar Ġtokenizer : ĠString Tokenizer Ġ= ĠString Tokenizer ("") Ċ private Ġfun Ġread (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( tokenizer . hasMore Tokens (). not ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtokenizer Ġ= ĠString Tokenizer ( reader . readLine () Ġ?: Ġreturn Ġ"", Ġ" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtokenizer . nextToken () Ċ } Ċ Ċ private Ġfun Ġread Int () Ġ= Ġread (). toInt () Ċ private Ġfun Ġread IntArray ( n : ĠInt ) Ġ= ĠInt Array ( n ) Ġ{ Ġread (). toInt () Ġ} Ċ Ċ private Ġval Ġwriter Ġ= ĠPrintWriter ( OUTPUT , Ġfalse ) Ċ private Ġinline Ġfun Ġoutput ( block : ĠPrintWriter . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġwriter . apply ( block ). flush () Ċ } Ċ