#include <bits/stdc++.h>
using namespace std;
long long fact(int a) { return a == 0 ? 1ll : a * fact(a - 1); }
long long gcd(long long a, long long b) { return a == b ? a : gcd(b % a, a); }
long long C(int n, int k) { return k == 0 ? 1ll : C(n - 1, k - 1) * n / k; }
long long toInt(string s) {
  istringstream iss(s);
  long long ret;
  iss >> ret;
  return ret;
}
template <class T>
string toString(T x) {
  ostringstream oss;
  oss << x;
  return oss.str();
}
int main() {
  int n, m, a[101], b[101];
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int j = 0; j < m; j++) scanf("%d", &b[j]);
  sort(a, a + n);
  sort(b, b + m);
  int v = ((a[n - 1]) > (a[0] * 2) ? (a[n - 1]) : (a[0] * 2));
  if (b[0] <= v)
    puts("-1");
  else
    printf("%d\n", v);
  return 0;
}
