#include <bits/stdc++.h>
#define int long long
using namespace std;
struct frac {
int a, b; // 分子;分母
friend frac operator + (frac a, frac b) {
frac c;
c.b = a.b * b.b;
c.a = a.a * b.b + b.a * a.b;
int G = __gcd(c.a, c.b);
c.a /= G;
c.b /= G;
return c;
}
friend frac operator / (frac a, frac b) {
frac c;
c.a = a.a * b.b;
c.b = a.b * b.a;
int G = __gcd(c.a, c.b);
c.a /= G;
c.b /= G;
return c;
}
friend bool operator == (frac a, frac b) {
return (a.a == b.a && a.b == b.b);
}
};
const frac frac0 = {0, 1};
signed main() {
int n;
frac k, ans;
cin >> k.a >> k.b >> n;
vector <int> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
ans.b = 1;
ans.a = a[n];
for (int i = n - 1; i >= 1; i--) {
swap(ans.a, ans.b);
frac t;
t.a = a[i];
t.b = 1;
ans = ans + t;
}
k = k + frac0;
if(k == ans) cout << "YES\n";
else cout << "NO\n";
}