#include #include #include #include using namespace std; typedef long long ll; // なるべく無駄を排したつもり // 計算量解析が出来ないのでわからない int main(){ int n; scanf("%d", &n); multiset m; ll sum = 0; for(int i = 0; i < n; i++){ int x; scanf("%d", &x); m.insert(x); sum += x; } int q; cin >> q; vector x(q); multiset que; for(int i = 0; i < q; i++){ scanf("%d", x.begin()+i); que.insert(x[i]); } for(int i = 0; i < q; i++){ que.erase(que.find(x[i])); int mindiv = que.empty() ? 1<<30 : *que.begin(); auto it = m.lower_bound(x[i]); vector pool; while(it != m.end()){ int val = *it; sum -= val; val %= x[i]; sum += val; if(val >= mindiv){ pool.push_back(val); } it = m.erase(it); } for(int x : pool) m.insert(x); printf("%lld\n", sum); } return 0; }