from bisect import bisect

N = int(eval(input()))

A = sorted(list(map(int,input().split())))

B = sorted(list(map(int,input().split())))

C = sorted(list(map(int,input().split())))



"""

前処理で、中部の祭壇でBi以下のサイズを選べるときの、中段と上段のパーツの組み合わせのパターン数を計算しておく。

"""

BPattern = []

for i in range(N):

    b = B[i]

    idx = bisect(A,b-1)

    if i == 0:

        BPattern.append(idx)

    else:

        BPattern.append(BPattern[-1]+idx)



ans = 0

for i in range(N):

    c = C[i]

    idx = bisect(B,c-1)

    if idx:

        ans+=BPattern[idx-1]



print(ans)
from bisect import bisect_left



N = int(eval(input()))

A = list(map(int,input().split()))

A.sort()

B = list(map(int,input().split()))

B.sort()

C = list(map(int,input().split()))

C.sort()



"""

前処理で中部に大きさb以下のパーツを使える場合の組み合わせの数を計算しておく。

"""



tmp1 = [0]

for b in B:

    a = bisect_left(A,b)

    tmp1.append(tmp1[-1]+a)



tmp2 = 0

for c in C:

    idx = bisect_left(B,c)

    tmp2 += tmp1[idx]

print(tmp2)

from bisect import bisect

N = int(eval(input()))
A = sorted(list(map(int, input().split())))
B = sorted(list(map(int, input().split())))
C = sorted(list(map(int, input().split())))
"""
前処理で、中部の祭壇でBi以下のサイズを選べるときの、中段と上段のパーツの組み合わせのパターン数を計算しておく。
"""
BPattern = []
for i in range(N):
    b = B[i]
    idx = bisect(A, b - 1)
    if i == 0:
        BPattern.append(idx)
    else:
        BPattern.append(BPattern[-1] + idx)
ans = 0
for i in range(N):
    c = C[i]
    idx = bisect(B, c - 1)
    if idx:
        ans += BPattern[idx - 1]
print(ans)

from bisect import bisect_left

N = int(eval(input()))
A = list(map(int, input().split()))
A.sort()
B = list(map(int, input().split()))
B.sort()
C = list(map(int, input().split()))
C.sort()
"""
前処理で中部に大きさb以下のパーツを使える場合の組み合わせの数を計算しておく。
"""
tmp1 = [0]
for b in B:
    a = bisect_left(A, b)
    tmp1.append(tmp1[-1] + a)
tmp2 = 0
for c in C:
    idx = bisect_left(B, c)
    tmp2 += tmp1[idx]
print(tmp2)

-from bisect import bisect +from bisect import bisect_left -A = sorted(list(map(int, input().split()))) -B = sorted(list(map(int, input().split()))) -C = sorted(list(map(int, input().split()))) +A = list(map(int, input().split())) +A.sort() +B = list(map(int, input().split())) +B.sort() +C = list(map(int, input().split())) +C.sort() -前処理で、中部の祭壇でBi以下のサイズを選べるときの、中段と上段のパーツの組み合わせのパターン数を計算しておく。 +前処理で中部に大きさb以下のパーツを使える場合の組み合わせの数を計算しておく。 -BPattern = [] -for i in range(N): -    b = B[i] -    idx = bisect(A, b - 1) -    if i == 0: -        BPattern.append(idx) -    else: -        BPattern.append(BPattern[-1] + idx) -ans = 0 -for i in range(N): -    c = C[i] -    idx = bisect(B, c - 1) -    if idx: -        ans += BPattern[idx - 1] -print(ans) +tmp1 = [0] +for b in B: +    a = bisect_left(A, b) +    tmp1.append(tmp1[-1] + a) +tmp2 = 0 +for c in C: +    idx = bisect_left(B, c) +    tmp2 += tmp1[idx] +print(tmp2)