#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
using namespace std ;
const int N = 500005 ;
struct Node
{
int v,order;
};
int n;
int c[N];
int aa[N];
Node a[N];
int Lowbit(int x)
{
return x & (-x);
}
void Update(int t,int val)
{
for (int i=t; i<=n; i+=Lowbit(i))
{
c[i] += val;
}
}
int getSum(int x)
{
int ans=0 ;
for (int i=x; i>0 ; i-=Lowbit(i))
ans += c[i];
return ans;
}
bool cmp(Node a,Node b)
{
return a.v<b.v;
}
int main()
{
while (~scanf ("%d" ,&n),n)
{
for (int i=1 ; i<=n; i++)
{
scanf ("%d" ,&a[i].v);
a[i].order=i;
}
sort(a+1 ,a+1 +n,cmp);
for (int i=1 ; i<=n; i++)
aa[a[i].order]=i;
memset (c,0 ,sizeof (c));
long long ans=0 ;
for (int i=1 ; i<=n; i++)
{
Update(aa[i],1 );
cout << i - getSum(aa[i]) << endl;
ans+=i-getSum(aa[i]);
}
printf ("%I64d\n" ,ans);
}
return 0 ;
}