#include <bits/stdc++.h>
using namespace std;
int multiples(vector<int>&A, vector<int>&B){
unordered_map<int,int> mppA, mppB;
for(int x : A) mppA[x]++;
for(int x : B) mppB[x]++;
int maxB = *max_element(B.begin(), B.end());
long long fin_count = 0;
for(auto it : mppA){
int current = it.first;
int freqA = it.second;
if(current == 0) continue;
int count = 0;
for(int j = current; j <= maxB; j += current){
if(mppB.count(j))
count += mppB[j];
}
fin_count += 1LL * count * freqA;
}
return fin_count;
}
int main(){
int n, m;
cin >> n >> m;
vector<int> A(n), B(m);
for(int i = 0; i < n; i++)
cin >> A[i];
for(int i = 0; i < m; i++)
cin >> B[i];
int count = multiples(A, B);
cout << "Number of valid pairs: " << count << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbXVsdGlwbGVzKHZlY3RvcjxpbnQ+JkEsIHZlY3RvcjxpbnQ+JkIpewogICAgdW5vcmRlcmVkX21hcDxpbnQsaW50PiBtcHBBLCBtcHBCOwoKICAgIGZvcihpbnQgeCA6IEEpIG1wcEFbeF0rKzsKICAgIGZvcihpbnQgeCA6IEIpIG1wcEJbeF0rKzsKCiAgICBpbnQgbWF4QiA9ICptYXhfZWxlbWVudChCLmJlZ2luKCksIEIuZW5kKCkpOwogICAgbG9uZyBsb25nIGZpbl9jb3VudCA9IDA7CgogICAgZm9yKGF1dG8gaXQgOiBtcHBBKXsKICAgICAgICBpbnQgY3VycmVudCA9IGl0LmZpcnN0OwogICAgICAgIGludCBmcmVxQSA9IGl0LnNlY29uZDsKCiAgICAgICAgaWYoY3VycmVudCA9PSAwKSBjb250aW51ZTsKCiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICBmb3IoaW50IGogPSBjdXJyZW50OyBqIDw9IG1heEI7IGogKz0gY3VycmVudCl7CiAgICAgICAgICAgIGlmKG1wcEIuY291bnQoaikpCiAgICAgICAgICAgICAgICBjb3VudCArPSBtcHBCW2pdOwogICAgICAgIH0KCiAgICAgICAgZmluX2NvdW50ICs9IDFMTCAqIGNvdW50ICogZnJlcUE7CiAgICB9CgogICAgcmV0dXJuIGZpbl9jb3VudDsKfQoKaW50IG1haW4oKXsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKCiAgICB2ZWN0b3I8aW50PiBBKG4pLCBCKG0pOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgY2luID4+IEFbaV07CgogICAgZm9yKGludCBpID0gMDsgaSA8IG07IGkrKykKICAgICAgICBjaW4gPj4gQltpXTsKCiAgICBpbnQgY291bnQgPSBtdWx0aXBsZXMoQSwgQik7CiAgICBjb3V0IDw8ICJOdW1iZXIgb2YgdmFsaWQgcGFpcnM6ICIgPDwgY291bnQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=