#include <bits/stdc++.h>
using namespace std;
const int INTMAX = 2147483647;
const int64_t LLMAX = 9223372036854775807;
const int MOD = 1000000007;
template <class T>
inline bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
inline void swap(int64_t& a, int64_t& b) {
  a ^= b;
  b ^= a;
  a ^= b;
}
inline void swap(int& a, int& b) {
  a ^= b;
  b ^= a;
  a ^= b;
}
int n, m;
vector<int64_t> x, y;
int main() {
  cin >> n >> m;
  x.resize(n);
  y.resize(m);
  for (int i{0}; i < (int)(n); i++) cin >> x[i];
  for (int i{0}; i < (int)(m); i++) cin >> y[i];
  sort((x).begin(), (x).end());
  sort((y).begin(), (y).end());
  int64_t h = 0, w = 0;
  for (int i{0}; i < (int)(n - 1); i++)
    for (int j = i + 1; j < n; j++) {
      w = (w + x[j] - x[i]) % MOD;
    }
  for (int i{0}; i < (int)(m - 1); i++)
    for (int j = i + 1; j < m; j++) {
      h = (h + y[j] - y[i]) % MOD;
    }
  int64_t ans = (w * h) % MOD;
  cout << ans << endl;
}
