#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
const int mod = 1e9 + 7;
const long long INF = (1LL << 60);
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
long long stringcount(string s, char c) {
  return count(s.cbegin(), s.cend(), c);
}
bool isInteger(double x) { return floor(x) == x; }
long long ceil(const long long a, const long long b) {
  return ((a) + (b)-1) / b;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n, m;
  cin >> n >> m;
  vector<long long> x(n), y(m);
  for (long long i = 0; i < n; i++) cin >> x[i];
  for (long long i = 0; i < m; i++) cin >> y[i];
  long long X = 0;
  for (long long i = 1; i < n; i++) {
    X = (X + (x[i] - x[i - 1]) * i % mod * (n - i)) % mod;
  }
  long long Y = 0;
  for (long long i = 1; i < m; i++) {
    Y = (Y + (y[i] - y[i - 1]) * i % mod * (n - i)) % mod;
  }
  cout << (X * Y) % mod << endl;
  return 0;
}
