#include int main(){ std::cin.tie(0); std::ios::sync_with_stdio(0); int N, M, K; std::cin >> N >> M >> K; char op; std::cin >> op; std::vector A(N), B(M); for(int i = 0; i < M; ++i) std::cin >> B[i]; for(int i = 0; i < N; ++i) std::cin >> A[i]; int64_t ans = 0; if(op == '+'){ std::map count; for(auto x : B) count[x % K] += 1; for(auto x : A){ if(x % K == 0){ ans += count[0]; }else{ ans += count[K - (x % K)]; } } }else{ std::map ga, gb; for(auto x : A) ga[std::gcd(x, K)] += 1; for(auto x : B) gb[std::gcd(x, K)] += 1; for(auto &[x,a] : ga){ for(auto &[y,b] : gb){ if(((int64_t)x*y) % K == 0){ ans += (int64_t)a * b; } } } } std::cout << ans << std::endl; return 0; }