#include <iostream>
#include <algorithm>
#include <cassert>
using namespace std;

int N, A[100+10];

int W[100+10];

// 半開区間[l,r)の範囲A[l]からA[r-1]を整列すると同時に、区間内の逆転するペアを返す。
int merge_and_count(int l,int r) {
  if (l+1 >= r) {
    return 0; // emptyまたは1個しか要素がない。
  }
  if (l+2 == r) { // A[l]とA[l+1]の2つしか要素がない。
    if (A[l] <= A[l+1]) {
      return 0;
    } else {
      swap(A[l],A[l+1]);
      return 1;
    }
  }
  int m = (l+r)/2;
  int cl = merge_and_count(l,m);
  int cr = merge_and_count(m,r);
  int c = 0; // 右と左を混ぜて逆転数を数える。
  // 答えは cl + cr + c である。
  int i=l, j=m; // i \in [l,m) , j \in [m,r)
  int k=l; // 小さいものからW[k]に書き込む。
  while (i < m && j < r) {
    if (A[i] <= A[j]) {
      W[k] = A[i];
      k++;
      i++;
    } else {
      W[k] = A[j];
      k++;
      j++;
      c += m-i;
    }
  } 
  while (i<m) {
    W[k++] = A[i++];
  }
  while (j<r) {
    W[k++] = A[j++];
  }
  assert (k == r);
  /* assert は 真なら以下の行を実行し、そうでなければそこでストップする関数。デバグにつかう。この段階ではk==rじゃなきゃおかしい。 */
  copy(W+l,W+r,A+l); // W[l]からW[r-1]を、A[l]を起点にしてコピーしていく。
  // 結論としては、A[l]からA[r-1]をソートしたことになる。
  return cl + cr + c;
}

int main() {  
  while (scanf("%d",&N) && N > 0) {
    for (int i=0;i<N;i++) {
      scanf("%d",&A[i]);
    }
    printf("%d\n",merge_and_count(0,N));
  }
}