#include<iostream>
using namespace std;
const int MAXN = 100001;
int arr[MAXN];
int help[MAXN];
int n;
// 返回跨左右产生的小和累加和,左侧有序、右侧有序,让左右两侧整体有序
// arr[l...m] arr[m+1...r]
long long merger(int l,int m,int r)
{
long long ans = 0;
for(int j=m+1, i = l, sum=0;j<=r; j++)
{
while(i<=m && arr[i]<=arr[j])
{
sum+=arr[i++];
}
ans+=sum;
}
//正常merger
int i = l;
int a = l;
int b = m+1;
while(a<=m && b<=r)
{
help[i++] = arr[a] <= arr[b] ?arr[a++]:arr[b++];
}
while(a<=m)
{
help[i++] = arr[a++];
}
while(b<=r)
{
help[i++] = arr[b++];
}
for( i=l;i<=r;i++)
{
arr[i]= help[i];
}
return ans;
}
long long SmallSum(int l,int r)
{
if(l==r)
{
return 0;
}
int m=((l+r)>>1);
return SmallSum(l,m) + SmallSum(m+1,r)+merger(l,m,r);
}
int main()
{
while(cin >> n)
{
for(int i= 0;i<n;i++)
{
cin >> arr[i];
}
cout<<SmallSum(0,n-1)<<endl;
}
return 0;
}