You are given an array a of length n and array b of length m both consisting of only integers 0 and 1. Consider a matrix c of size n × m formed by following rule: c_{i, j} = a_i ⋅ b_j (i.e. a_i multiplied by b_j). It's easy to see that c consists of only zeroes and ones too.

How many subrectangles of size (area) k consisting only of ones are there in c?

A subrectangle is an intersection of a consecutive (subsequent) segment of rows and a consecutive (subsequent) segment of columns. I.e. consider four integers x_1, x_2, y_1, y_2 (1 ≤ x_1 ≤ x_2 ≤ n, 1 ≤ y_1 ≤ y_2 ≤ m) a subrectangle c[x_1 ... x_2][y_1 ... y_2] is an intersection of the rows x_1, x_1+1, x_1+2, ..., x_2 and the columns y_1, y_1+1, y_1+2, ..., y_2.

The size (area) of a subrectangle is the total number of cells in it.

Input

The first line contains three integers n, m and k (1 ≤ n, m ≤ 40 000, 1 ≤ k ≤ n ⋅ m), length of array a, length of array b and required size of subrectangles.

The second line contains n integers a_1, a_2, …, a_n (0 ≤ a_i ≤ 1), elements of a.

The third line contains m integers b_1, b_2, …, b_m (0 ≤ b_i ≤ 1), elements of b.

Output

Output single integer — the number of subrectangles of c with size (area) k consisting only of ones.

Examples

Input


3 3 2
1 0 1
1 1 1


Output


4


Input


3 5 4
1 1 1
1 1 1 1 1


Output


14

Note

In first example matrix c is:

<image>

There are 4 subrectangles of size 2 consisting of only ones in it:

<image>

In second example matrix c is:

<image>


"""
NTC here
"""
import sys
inp = sys.stdin.readline
def input(): return inp().strip()
# flush= sys.stdout.flush
# import threading
# sys.setrecursionlimit(10**6)
# threading.stack_size(2**26)

def iin(): return int(input())


def lin(): return list(map(int, input().split()))


# range = xrange
# input = raw_input


def main():
    T = 1
    while T:
        T-=1
        n, m, k = lin()
        mx = max(n, m)
        a = lin()+[0]
        b = lin()+[0]
        ans1 = [0]*(mx+1)
        ans2 = [0]*(mx+1)
        ch = 0
        for i in a:
            if i:
                ch += 1
            else:
                ans1[ch]+=1
                ch = 0
        ch = 0
        for i in b:
            if i:
                ch += 1
            else:
                ans2[ch]+=1
                ch = 0
        # print(ans1, ans2)
        for i in range(mx+1):
            if ans1[i]:
                ch = i-1
                ch2 = ans1[i]
                for j in range(1, i+1):
                    ans1[ch]+=(j+1)*ch2
                    ch-=1
            if ans2[i]:
                ch = i-1
                ch2 = ans2[i]
                for j in range(1, i+1):
                    ans2[ch]+=(j+1)*ch2
                    ch-=1

        # print(ans1, ans2)
        i = 1
        sol = 0
        while i*i<=k:
            if k%i==0:
                # print(i, k//i)
                if i<=mx and k//i<=mx:
                    sol += ans1[i]*ans2[k//i]
                    if i!= k//i:sol += ans1[k//i]*ans2[i]   
            i+=1
        print(sol)

main()

# threading.Thread(target=main).start()


"""
1
5
1 3
1 4
1 6
2 6
0 5
"""