#include <bits/stdc++.h>
struct {
  inline operator int() {
    int x;
    return scanf("%d", &x), x;
  }
  inline operator long long() {
    long long x;
    return scanf("%lld", &x), x;
  }
  inline operator char() {
    char x[3];
    return scanf("%s", x), *x;
  }
} read;
const int maxn = 100005;
int tmp1, tmp2;
int exgcd(int a, int b, int &x, int &y) {
  if (!b) {
    x = 1;
    y = 0;
    return a;
  }
  int g = exgcd(b, a % b, y, x);
  y -= a / b * x;
  return g;
}
struct Shit {
  int frombegin, now, buff;
} shi[maxn << 1];
std::set<int> keyn[maxn << 1], keym[maxn << 1];
long long solve(int n, int m, int id) {
  std::map<int, int> dis;
  std::set<int> pos;
  for (int x : keyn[id]) {
    pos.insert(x);
    dis[x] = x;
  }
  for (int x : keym[id]) {
    pos.insert(x % n);
    if (dis.count(x % n))
      dis[x % n] = std::min(dis[x % n], x);
    else
      dis[x % n] = x;
  }
  int x;
  exgcd(m, n, x, tmp2);
  x %= n;
  if (x < 0) x += n;
  int p = 0;
  for (int po : pos)
    shi[++p] = {int(1ll * x * (po - *pos.begin()) % n), dis[po],
                int(keyn[id].count(po))};
  std::sort(shi + 1, shi + p + 1,
            [](Shit x, Shit y) { return x.frombegin < y.frombegin; });
  shi[p + 1] = {n, -1, -1};
  long long res = -10000000000000;
  for (int i = 1; i <= p; i++)
    if (!shi[i].buff or shi[i + 1].frombegin > shi[i].frombegin + 1)
      res = std::max(
          res,
          shi[i].now + 1ll * (shi[i + 1].frombegin - shi[i].frombegin - 1) * m);
  return res;
}
int main() {
  int n = read, m = read;
  int g = exgcd(n, m, tmp1, tmp2);
  if (g > 200000) return puts("-1"), 0;
  for (int i = read; i; --i) {
    int x = read;
    keyn[x % g].insert(x / g);
  }
  for (int i = read; i; --i) {
    int x = read;
    keym[x % g].insert(x / g);
  }
  long long ans = 0;
  for (int i = 0; i < g; i++) {
    if (keyn[i].empty() and keym[i].empty()) return puts("-1"), 0;
    ans = std::max(ans, solve(n / g, m / g, i) * g + i);
    std::swap(keyn[i], keym[i]);
    ans = std::max(ans, solve(m / g, n / g, i) * g + i);
  }
  printf("%lld\n", ans);
}
