import
java.util.*;
class
GFG
{
static
int
isPresent(
int
n,
int
x)
{
String num = String.valueOf(n);
for
(
int
i =
0
; i < num.length();
i++) {
if
((num.charAt(i) -
'0'
) == x)
return
i;
}
return
-
1
;
}
static
int
removeDigit(
int
n,
int
index)
{
String num = String.valueOf(n);
String ans =
""
;
for
(
int
i =
0
;
i < num.length(); i++)
{
if
(i != index)
ans += num.charAt(i);
}
if
(ans ==
""
|| (ans.length() ==
1
&& ans.charAt(
0
) ==
'0'
))
return
-
1
;
int
x = Integer.valueOf(ans);
return
x;
}
static
boolean
reduceNtoX(
int
a,
int
b,
int
d[],
int
n)
{
Queue<Integer> q=
new
LinkedList<>();
q.add(a);
Map<Integer, Boolean> visited=
new
HashMap<>();
visited.put(a,
true
);
while
(!q.isEmpty()) {
int
top = q.peek();
q.poll();
if
(top <
0
)
continue
;
if
(top == b)
return
true
;
for
(
int
i =
0
; i < n; i++) {
if
(d[i] !=
0
&& top % d[i] ==
0
&& !visited.getOrDefault(top / d[i],
false
)) {
q.add(top / d[i]);
visited.put(top / d[i],
true
);
}
int
index = isPresent(top, d[i]);
if
(index != -
1
) {
int
newElement
= removeDigit(top, index);
if
(newElement != -
1
&& (!visited.getOrDefault(newElement,
false
))) {
q.add(newElement);
visited.put(newElement,
true
);
}
}
}
}
return
false
;
}
public
static
void
main (String[] args)
{
int
A =
5643
, B =
81
;
int
D[] = {
3
,
8
,
1
};
int
N = D.length;
if
(reduceNtoX(A, B, D, N))
System.out.println(
"Yes"
);
else
System.out.println(
"No"
);
}
}