package Ġfr 9 7 . hard Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . math . max ĊĊ Ċ fun Ġmaximum Sum ( a : ĠArray < Long >, Ġm : ĠLong ): ĠLong Ġ{ ĊĠĠĠ Ġ// ĠFunction Ġto Ġcreate Ġpower set Ġfrom Ġgiven Ġarray ĊĠĠĠ Ġfun Ġpower Set ( a : ĠArray < Long >): ĠArray < Array < Long >> Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( a . isEmpty ()) ĠarrayOf ( empty Array ()) ĊĠĠĠĠĠĠĠ Ġelse Ġpower Set ( a . slice Array ( 1 Ġuntil Ġa . size )). let Ġ{ Ġit Ġ+ Ġit . map Ġ{ Ġit Ġ+ Ġa . first () Ġ} Ġ} ĊĊĠĠĠ Ġ// ĠFold Ġover Ġpower set Ġto Ġfind Ġmaximum Ġsum Ġ% Ġm ĊĠĠĠ Ġreturn Ġpower Set ( a ). fold ( 0 L ) Ġ{ Ġcurr , Ġarr Ġ-> Ġmax ( curr , Ġarr . sum () Ġ% Ġm ) Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġscan Ġ= ĠScanner ( System .` in `) ĊĊĠĠĠ Ġval Ġq Ġ= Ġscan . nextLine (). trim (). toInt () ĊĊĠĠĠ Ġfor Ġ( q Itr Ġin Ġ 1 .. q ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnm Ġ= Ġscan . nextLine (). split (" Ġ") ĊĊĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġnm [ 0 ]. trim (). toInt () ĊĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġnm [ 1 ]. trim (). to Long () ĊĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġscan . nextLine (). split (" Ġ"). map Ġ{ Ġit . trim (). to Long () Ġ}. to Typed Array () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmaximum Sum ( a , Ġm ) ĊĊĠĠĠĠĠĠĠ Ġprintln ( result ) ĊĠĠĠ Ġ} Ċ }