#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; const ll mod = 1000000007; const ll INF = (1e+18) + 7; #define rep(i,n) for(int i=0;i=0;i--) #define all(x) (x).begin(),(x).end() #define stop char nyaa;cin>>nyaa; using P = pair; using LP = pair; int h, w; ll x; ll a[1 << 17], b[1 << 17]; void solvep() { map mp; rep(j, w) { mp[b[j] % x]++; } ll ans = 0; rep(i, h) { int rest = x - (a[i]) % x; if (rest == x)rest = 0; ans += mp[rest]; } cout << ans << endl; } ll gcd(ll a, ll b) { if (a < b)swap(a, b); while (b) { ll r = a % b; a = b; b = r; } return a; } void solvem() { vector ds; int k = sqrt(x + 0.1); for (int i = 1; i <= k; i++) { if (x%i == 0) { ds.push_back(i); ds.push_back(x / i); } } sort(all(ds)); ds.erase(unique(all(ds)), ds.end()); map mp; rep(i, ds.size())mp[ds[i]] = i; vector ch(ds.size()), cw(ds.size()); rep(i, h) { ch[mp[gcd(a[i], x)]]++; } rep(j, w) { cw[mp[gcd(b[j], x)]]++; } ll ans = 0; rep(i, ch.size())rep(j, cw.size()) { if (ds[i] * ds[j] % x == 0) { ans += ch[i] * cw[j]; } } cout << ans << endl; } void solve() { cin >> h >> w>>x; char c; cin >> c; rep(j, w)cin >> b[j]; rep(i, h)cin >> a[i]; if (c == '+') { solvep(); } else { solvem(); } } signed main() { cin.tie(0); ios::sync_with_stdio(false); //int t; cin >> t;rep(i,t) solve(); solve(); stop return 0; }