#include using namespace std; using ll=long long; using ull=unsigned long long; using P=pair; templateusing minque=priority_queue,greater>; templatebool chmax(T &a,const T &b){return (abool chmin(T &a,const T &b){return (a>b?(a=b,true):false);} templateistream &operator>>(istream &is,pair&p){is>>p.first>>p.second;return is;} templateistream &operator>>(istream &is,tuple&a){is>>std::get<0>(a)>>std::get<1>(a)>>std::get<2>(a);return is;} templateistream &operator>>(istream &is,array&a){for(auto&i:a)is>>i;return is;} templateistream &operator>>(istream &is,vector &a){for(auto &i:a)is>>i;return is;} templatevoid operator++(pair&a,int n){a.first++,a.second++;} templatevoid operator--(pair&a,int n){a.first--,a.second--;} templatevoid operator++(vector&a,int n){for(auto &i:a)i++;} templatevoid operator--(vector&a,int n){for(auto &i:a)i--;} #define overload3(_1,_2,_3,name,...) name #define rep1(i,n) for(int i=0;i<(int)(n);i++) #define rep2(i,l,r) for(int i=(int)(l);i<(int)(r);i++) #define rep(...) overload3(__VA_ARGS__,rep2,rep1)(__VA_ARGS__) #define reps(i,l,r) rep2(i,l,r) #define all(x) x.begin(),x.end() #define pcnt(x) __builtin_popcountll(x) #define fin(x) return cout<<(x)<<'\n',static_cast(0) #define yn(x) cout<<((x)?"Yes\n":"No\n") #define uniq(x) sort(all(x)),x.erase(unique(all(x)),x.end()) template inline int fkey(vector&z,T key){return lower_bound(z.begin(),z.end(),key)-z.begin();} ll myceil(ll a,ll b){return (a+b-1)/b;} template auto vec(const int (&d)[n],const T &init=T()){ if constexpr (id(d,init)); else return init; } #ifdef LOCAL #include #define SWITCH(a,b) (a) #else #define debug(...) static_cast(0) #define debugg(...) static_cast(0) #define SWITCH(a,b) (b) templateostream &operator<<(ostream &os,const pair&p){os<>testcase; for(int i=0;i #include template constexpr std::enable_if_t::digits<=32,int>msb(T n){return n==0?-1:31-__builtin_clz(n);} template constexpr std::enable_if_t<(std::numeric_limits::digits>32),int>msb(T n){return n==0?-1:63-__builtin_clzll(n);} template constexpr std::enable_if_t::digits<=32,int>lsb(T n){return n==0?-1:__builtin_ctz(n);} template constexpr std::enable_if_t<(std::numeric_limits::digits>32),int>lsb(T n){return n==0?-1:__builtin_ctzll(n);} template constexpr std::enable_if_t,T>floor_pow2(T n){return n==0?0:T(1)< constexpr std::enable_if_t,T>ceil_pow2(T n){return n<=1?1:T(1)<<(msb(n-1)+1);} template constexpr T safe_div(T a,T b){return a/b-(a%b&&(a^b)<0);} template constexpr T safe_ceil(T a,T b){return a/b+(a%b&&(a^b)>0);} template struct LazySegmentTree{ private: using S=typename M::S; using F=typename M::F; int n,z; int log2n; std::vectordat; std::vectorlazy; inline void propagate(int i,const F&f){ dat[i]=M::mapping(f,dat[i],1<<(log2n-msb(i))); lazy[i]=M::composition(f,lazy[i]); } inline void push(int i){ if(il;j--)push(i>>j); } inline void path_update(int i){ int l=lsb(i); i>>=(l+1); while(i){ update(i); i>>=1; } } public: LazySegmentTree():n(0),z(0),log2n(0){} explicit LazySegmentTree(int n_):n(n_),z(ceil_pow2(n_)){ log2n=msb(z); dat.resize(z*2,M::e()),lazy.resize(z*2,M::id()); } explicit LazySegmentTree(const std::vector&init):n(init.size()),z(ceil_pow2((int)init.size())){ log2n=msb(z); dat.resize(z*2,M::e()),lazy.resize(z*2,M::id()); for(int i=0;i=1;i--)update(i); } LazySegmentTree(int n_,S init):LazySegmentTree(std::vector(n_,init)){} void set(int i,const S&x){ i+=z; for(int j=log2n;j>0;j--)push(i>>j); dat[i]=x; i>>=1; while(i){ update(i); i>>=1; } } S get(int i){ i+=z; for(int j=log2n;j>0;j--)push(i>>j); return dat[i]; } void apply(int l,int r,const F&f){ l+=z,r+=z; path_push(l),path_push(r); int l2=l,r2=r; while(l>=1,r>>=1; } path_update(l2),path_update(r2); } S prod(int l,int r){ l+=z,r+=z; path_push(l),path_push(r); S left=M::e(),right=M::e(); while(l>=1,r>>=1; } return M::op(left,right); } inline S all_prod()const{return dat[1];} std::vectorget_all(){ for(int i=1;i(dat.begin()+z,dat.begin()+z+n); } friend std::ostream &operator<<(std::ostream&os,const LazySegmentTree&seg){ std::vectorlazy2(seg.lazy); for(int i=0;i>n>>h>>t; vectora(n); cin>>a; vectorinit(n); rep(i,n)init[i]={i,0,a[i]}; LazySegmentTreeseg(init); vectorc(n); while(t--){ auto v=seg.all_prod(); ll f=(h-v.b+v.a-1)/v.a; seg.apply(0,n,f); c[v.idx]++; seg.set(v.idx,{v.idx,0,a[v.idx]}); } rep(i,n)cout<