#import sys # input = sys.stdin.readline def mp():return map(int,input().split()) def lmp():return list(map(int,input().split())) def mps(A):return [tuple(map(int, input().split())) for _ in range(A)] import math import bisect import heapq from copy import deepcopy as dc from itertools import accumulate from collections import Counter, defaultdict, deque def ceil(U,V):return (U+V-1)//V def modf1(N,MOD):return (N-1)%MOD+1 inf = int(1e20) mod = 998244353 def factorization(n): arr = defaultdict(lambda :0) temp = n for i in range(2, int(-(-n**0.5//1))+1): if temp%i==0: cnt=0 while temp%i==0: cnt+=1 temp //= i arr[i] += cnt if temp!=1: arr[temp] += 1 # if len(list(arr.items())) == 0: # arr[n] += 1 return arr x,a,y,b = mp() xf = factorization(x) yf = list(factorization(y).items()) for i,j in yf: # print(i,j) # print(xf[i]*a,j*b) if (xf[i]*a)<(j*b): print("No") exit() print("Yes")