from copy import deepcopy, copy import sys import io from typing import Optional import time from random import randrange, randint, random, uniform import sys, io from collections import deque, defaultdict import heapq from collections import Counter import math from math import gcd from functools import lru_cache from itertools import combinations, permutations from bisect import bisect_left, bisect_right from itertools import groupby from itertools import accumulate from math import factorial import decimal import math # from sortedcontainers import SortedList # import pypyjit # pypyjit.set_param("max_unroll_recursion=-1") sys.setrecursionlimit(1000000000) sys.set_int_max_str_digits(1000000000) start_time = time.time() A, B = map(int, input().split()) T = [int(x) for x in input().split()] S = [int(x) for x in input().split()] T_odd = [x for x in T if x % 2 == 1] T_even = [x for x in T if x % 2 == 0] S_odd = [x for x in S if x % 2 == 1] S_even = [x for x in S if x % 2 == 0] if len(T) == 1: t = T[0] for s in S: if s % t != 0: print("No") exit() print("Yes") exit() T = sorted(T) t0 = T[0] is_ok = False for t in T: if t % t0 != 0: is_ok = True if not is_ok: for s in S: if s % t0 != 0: print("No") exit() print("Yes") exit() if len(T_odd) == 0 and len(S_even) == 0: print("No") exit() print("Yes")