#include<stdio.h>

#define FILL(a,b) fill(a,a+(sizeof(a)/sizeof(a[0])),b)
#define FOR(a,b,c) for(int a=b; a<=c; a++)
#define DOWNFOR(a,b,c) for(int a=b; a>=c; a--)
#define SIZEOF(a) (sizeof(a)/sizeof(a[0]))
#define FORARR(i,a) for(unsigned i=0; i<SIZEOF(a); i++)
#define FOREACH(a,b) for(__typeof((b).begin()) a=(b).begin(); a!=(b).end(); a++)
#define GETI(a) scanf("%d", &a)

 long long countmerge(int* a,int s,int e){
 // cout<<"countmerge"<< s << " " <<e<< endl;
  if(e<=s){
    return 0;
  }
  if(e==s+1){
    if (a[s]>a[e]){
      int x = a[s];
      a[s]=a[e];
      a[e]=x;
      return 1;
    } else{
      return 0;
    } 
  }
  int half = (s+e)/2;
  long long result = countmerge(a, s, half) + countmerge(a,half+1,e);
  int sorted[150000];
  int posa=s, posb=half+1;
  FOR(i,0,e-s){
    if((a[posa]>a[posb] || posa > half) && posb<=e){ //pridavame z 2     
      sorted[i]=a[posb++];
      //cout << "z2" << endl;
      //cout << "plus " <<half-posa+1;
      result += half-posa+1;
    }else{ // z 1.
      //cout << "z1" << endl;
      sorted[i]=a[posa++];
    }
  }
  FOR(i,0,e-s)
    a[i+s]=sorted[i];
   //cout<<result<<endl; 
  return result;  
}


long long countinv(int* a,int* b,int n){
       int ainv[150000];
       FOR(i,0,n-1)
	  ainv[a[i]] = i;
       int bainv[150000];
       FOR(i,0,n-1)
	  bainv[i] = ainv[b[i]];
      return countmerge(bainv,0,n-1);
}
int a[150000],b[150000],c[150000];

int main(void){
  
    int n;
    
    while(scanf("%d",&n)==1 && n){
      FOR(i,0,n-1){
	GETI(a[i]);       
      }
      FOR(i,0,n-1){
       GETI(b[i]);       
      }
      FOR(i,0,n-1){
       GETI(c[i]);
      }
      long long inversions=0;
      inversions += countinv(a,b,n);
      //cout << inversions;
      inversions += countinv(a,c,n);
      //cout << inversions;
      inversions += countinv(b,c,n);
      //cout << inversions;
      //cout << (inversions/2)<<endl;

      long long nn=(long long)n;
      
      printf("%lld\n", (nn*(nn-1)-inversions)/2);
    }
    
  
    return 0;
}