// #pragma GCC optimize ("Ofast") // #pragma GCC optimize ("unroll-loops") // #pragma GCC target ("avx,avx2,fma") #include #define for(i, a, b) for(int i = (a); i <= (b); i ++) using std::cin, std::cout, std::cerr; using ll = long long; const ll P = 1e9 + 7; int main() { std::ios::sync_with_stdio(false); int n, m; cin >> n >> m; std::vector a(n), b(m); for(i, 0, n - 1) cin >> a[i]; for(i, 0, m - 1) cin >> b[i]; ll ans = 0; for(i, 0, n - 1) for(j, 0, m - 1) if(a[i]) { int g = std::__gcd(a[i], b[j]); ans += ll(a[i]) * (b[j] +1); ans -= b[j] - g; ans %= P; } ans = (ans % P + P) % P; cout << ans << '\n'; }