#include using namespace std; long long gcd(long long a, long long b) { if (a < 0) a = -a; if (b < 0) b = -b; if (a < b) swap(a, b); while (b > 0) { long long t = a; a = b; b = t % b; } return a; } int main() { int n, m; cin >> n >> m; long long a[n], b[m]; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < m; i++) cin >> b[i]; const int M = 1000000007; long long ans = 0; for (int i = 0; i < n; i++) { if (a[i] == 0) continue; for (int j = 0; j < m; j++) ans += (a[i] + 1) * (b[j] + 1) % M + gcd(a[i], b[j]) - 2 * b[j] - 1; } cout << ans % M << endl; }