#include <bits/stdc++.h>
using namespace std;
struct cww {
  cww() {
    ios::sync_with_stdio(false);
    cin.tie(0);
  }
} star;
const long long INF = numeric_limits<long long>::max();
int main() {
  const long long P = 1000000007LL;
  int n, m;
  cin >> n >> m;
  vector<long long> x(n), y(m);
  for (int i = 0; i < (n); i++) {
    cin >> x[i];
  }
  for (int i = 0; i < (m); i++) {
    cin >> y[i];
  }
  long long xSum = 0, ySum = 0;
  for (int i = 0; i < (n); i++) {
    xSum += ((n - 2 * i - 1) * x[n - i - 1]) % P;
  }
  for (int i = 0; i < (m); i++) {
    ySum += ((m - 2 * i - 1) * y[m - i - 1]) % P;
  }
  long long ans = 0;
  ans = (xSum * ySum) % P;
  cout << ans << endl;
  return 0;
}
