#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long mult(long long a, long long b, long long p = MOD) {
  return ((a % p) * (b % p)) % p;
}
long long add(long long a, long long b, long long p = MOD) {
  return (a % p + b % p) % p;
}
long long valx[1204], valy[1204];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n, m;
  cin >> n >> m;
  vector<long long> vx, vy;
  for (long long i = 0; i < n; i++) cin >> valx[i];
  for (long long i = 0; i < m; i++) {
    cin >> valy[i];
  }
  for (long long i = 1; i < m; i++) {
    vx.push_back(valy[i] - valy[i - 1]);
  }
  for (long long i = 1; i < n; i++) {
    vy.push_back(valx[i] - valx[i - 1]);
  }
  long long C = 0;
  long long M = vx.size();
  for (long long i = 0; i < vx.size(); i++) {
    C = add(C, mult(vx[i], mult((M - i), (i + 1))));
  }
  long long S = 0;
  long long N = vy.size();
  for (long long i = 0; i < vy.size(); i++) {
    S = add(S, mult(N - i, vy[i]));
  }
  long long tot = 0;
  for (long long i = 0; i < vy.size(); i++) {
    tot = add(tot, mult(C, S));
    S -= mult(N - i, vy[i]);
    S += MOD;
    S %= MOD;
  }
  cout << tot << endl;
}
