#include using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; using i128 = __int128; constexpr int mod = 1e9 + 7; void solve() { int N, M; std::cin >> N >> M; std::vector A(N), B(M); for(int& x : A) std::cin >> x; for(int& x : B) std::cin >> x; i64 ans = 0; for(int i = 0; i < N; i ++) { for(int j = 0; j < M; j ++) { ans = (ans + A[i] - B[j]) % mod; ans = (ans + 1LL * A[i] * B[j] ) % mod; ans = (ans + std::gcd(A[i], B[j])) % mod; } } std::cout << ans; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int T = 1; //std::cin >> T; while (T--) { solve(); } return 0; }