#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) x&-x
#define LL long long
#define maxn 500005
using namespace std;
struct node
{
int val;
int pos;
}B[maxn];
bool cmp(node a,node b)
{
return a.val<b.val;
}
int C[maxn];
int n;
void update(int k,int v)
{
while(k<=n)
{
C[k]+=v;
k+=lowbit(k);
}
}
LL sum(int k)
{
LL ans=0;
while(k>0)
{
ans+=C[k];
k-=lowbit(k);
}
return ans;
}
int main()
{
ios::sync_with_stdio(0);
while(cin>>n && n){
for(int i=1;i<=n;i++)
{
C[i]=0;
}
for(int i=1;i<=n;i++){
cin>>B[i].val;
update(i,1);
B[i].pos=i;
}
sort(B+1,B+1+n,cmp);
LL res=0;
for(int i=1;i<=n;i++)
{
res+=sum(B[i].pos)-1;
update(B[i].pos,-1);
}
cout<<res<<endl;
}
}
/*pos用来记录位置,
9 1 0 5 4
1 2 3 4 5
排序后:
0 1 4 5 9
3 2 5 4 1
0位于原数组3的位置前边有两个数需要交换2次,
9 1 5 4
1前边有1个数,需要交换1次
9 5 4
4前边有2个数需要交换2次
9 5
...*/
/*每个位置原来都为1,计算之后为了不对后边产生影响该位置为0,即树状数组后边的都-1;
*/