#include using namespace std; int gcd(int a, int b){ return b==0 ? a : gcd(b, a%b); } int main(){ int N, M, K; char op; cin >> N >> M >> K >> op; vector A(N), B(M); for(int i=0; i> B[i]; for(int i=0; i> A[i]; int64_t ans = 0; if(op == '+'){ map num; for(int b : B) num[b%K]++; for(int a : A) ans += num[(K-a%K)%K]; }else{ map divs; for(int i=1; i*i <= K; i++) if(K%i == 0){ divs[i] = divs[K/i] = 0; } for(int b : B) divs[gcd(K, b)]++; for(auto& p : divs){ for(int v=2*p.first; v<=K; v++) if(divs.count(v)) p.second += divs[v]; } for(int a : A) ans += divs[K/gcd(a, K)]; } cout << ans << endl; return 0; }