#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,s,ss,ma,l,r,a[300005],b[300005],c[300005];
//b 记录个数
//c 记录a[i]*k
void insert(int x)
{
int y=x;
while(x<=ma) b[x]++,x+=(x&-x);
}
void insert1(int x,int y)
{
while(x<=ma) c[x]+=y,x+=(x&-x);
}
int get(int x)
{
int ans=0;
while(x>0) ans+=b[x],x-=(x&-x);
return ans;
}
int get2(int x)
{
int ans=0;
while(x>0) ans+=c[x],x-=(x&-x);
return ans;
}
signed main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",a+i),ma=max(ma,a[i]);
//求树状数组上界
for(int i=1;i<=n;i++)
{
s=s+(i-1)*a[i]+ss; ss+=a[i];
//ss 记录前缀和
s-=get2(a[i]);
for(int k=a[i];k<=ma;k+=a[i])
{
r=min(ma,k+a[i]-1); //求右端点
s-=k*(get(r)-get(k-1));
// 贡献2=∑( a[i]-a[j]*(a[i]/a[j]) )
// =∑a[i] -∑a[j]*(a[i]/a[j])
// 后半段= a[j]*区间下取整的值*区间内的个数
insert1(k,k),insert1(r+1,-k);
//对于每个[c*a[i],(c+1)*a[i]) 加上c*a[i]的贡献
}
insert(a[i]); cout<<s<<" ";
}
return 0;
}