//执行会超时
#include <iostream>
#include <algorithm>
using namespace std;
#define N 100000
int main(){
int n,a[N],b[N],c[N];cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
for(int i=0;i<n;i++) cin>>c[i];
int sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++){
if(a[i]<b[j] && a[i]<c[k] && b[j]<c[k]){
sum++;
}
}
cout<< sum <<endl;
return 0;
}
//没有问题
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 100005;
int n,a[MAX],b[MAX],c[MAX];
typedef long long LL;
LL sum;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) cin>>c[i];
sort(a+1,a+n+1);
sort(c+1,c+n+1);
for(int i=1;i<=n;i++){
LL x = (lower_bound(a + 1, a + n + 1, b[i]) - a) - 1;
LL y = n - (upper_bound(c + 1, c + n + 1, b[i]) - c) + 1;
sum += x*y;
}
cout<<sum<<endl;
return 0;
}
//自己实现二分法
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 100005;
int n,a[MAX],b[MAX],c[MAX];
typedef long long LL;
LL sum;
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
for(int i=0;i<n;i++) cin>>c[i];
sort(a,a+n);
sort(b,b+n);
sort(c,c+n);
int i=n-1,j=n-1,s;
while(i>=0 && j>=0){
if(b[j]>a[i]){
s=i+1;
j--;
}else
{
i--;
}
}
i=0,j=0;
while(i<n && j<n){
if(b[i]<c[j]){
sum += s*(n-j);
i++;
}else{
j++;
}
}
cout<<sum<<endl;
return 0;
}