class ĠBIT () Ġ{ ĊĠĠĠ Ġval Ġv Ġ= ĠLong Array ( SZ ) ĊĠĠĠ Ġfun Ġup d (_ a : ĠInt , Ġb : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġ_ a ĊĠĠĠĠĠĠĠ Ġwhile Ġ( a Ġ< ĠS Z ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv [ a ] Ġ+= Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ+= Ġ( a Ġand Ġ- a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġquery (_ a : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġ_ a ĊĠĠĠĠĠĠĠ Ġvar Ġans : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( a Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġans Ġ+= Ġv [ a ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ-= Ġ( a Ġand Ġ- a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġans ĊĠĠĠ Ġ} Ċ }