#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
int arr[N], brr[N], crr[N];
int n;
int binary1(int x)
{
int l = 0, r = n + 1;
while (l + 1 != r)
{
int mid = (l + r) / 2;
if (arr[mid] < brr[x])l = mid;
else r = mid;
}
if (arr[l] < brr[x])return l;
else return -1;
}
int binary2(int x)
{
int l = 0, r = n + 1;
while (l + 1 != r)
{
int mid = (l + r) / 2;
if (crr[mid] <= brr[x])l = mid;
else r = mid;
}
if (crr[r] > brr[x])return r;
else return -1;
}
int main(void)
{
cin >> n;
for (int i = 1; i <= n; i++)cin >> arr[i];
for (int i = 1; i <= n; i++)cin >> brr[i];
for (int i = 1; i <= n; i++)cin >> crr[i];
sort(arr + 1, arr + n + 1);
sort(brr + 1, brr + 1 + n);
sort(crr + 1, crr + 1 + n);
long long res = 0, tmp = 0;
for (int i = 1; i <= n; i++)
{
int x = binary1(i);
int y = binary2(i);
if (x == -1 || y == -1)continue;
else
{
tmp = (long long)((x) * (n - y + 1));
res += tmp;
}
}
cout << res << endl;
return 0;
}