#include #define rep(i,n) for(int i=0;i ; const int INF = 1e9; const int MOD = 1000000007; ll gcd(ll i,ll j){ if(j == 0) return i; return gcd(j,i%j); } int main(){ ll n,m,k; cin >> n >> m >> k; char op; cin >> op; ll ans = 0; if(op == '+'){ map b; vector a(n); rep(i,m){ ll p; cin >> p; p %= k; b[p] ++; } rep(i,n) cin >> a[i]; rep(i,n){ a[i] %= k; if(a[i] == 0) ans += b[0]; else ans += b[k-a[i]]; } }else{ map a,b; rep(i,m){ ll p; cin >> p; p = gcd(p,k); b[p] ++; }rep(i,n){ ll p; cin >> p; p = gcd(p,k); a[p] ++; } for(auto p:a){ for(auto q:b){ if((p.first * q.first)%k == 0){ ans += p.second * q.second; } } } } cout << ans << endl; return 0; }