#include <bits/stdc++.h>
using namespace std;
long long dist(pair<long long, long long>& o, pair<long long, long long>& u) {
  return abs(o.first - u.first) + abs(o.second - u.second);
}
int32_t main() {
  long long a, b;
  cin >> a >> b;
  pair<long long, long long> tar = {a, b};
  string s;
  cin >> s;
  pair<long long, long long> vec = {0, 0};
  if (a == 0 && b == 0) {
    cout << "Yes" << endl;
    return 0;
  }
  for (long long i = 0; i < s.size(); i++) {
    switch (s[i]) {
      case 'U':
        vec.second++;
        break;
      case 'D':
        vec.second--;
        break;
      case 'L':
        vec.first--;
        break;
      case 'R':
        vec.first++;
        break;
    }
    if (vec.first == a && vec.second == b) {
      cout << "Yes" << endl;
      return 0;
    }
  }
  pair<long long, long long> orig = {0, 0};
  pair<long long, long long> cur = {0, 0};
  long long k = (long long)((a + b - cur.first - cur.second) /
                            (double)(vec.first + vec.second));
  if (k >= 0 && k * vec.first + cur.first == a &&
      k * vec.second + cur.second == b) {
    cout << "Yes" << endl;
    return 0;
  }
  for (long long i = 0; i < s.size(); i++) {
    switch (s[i]) {
      case 'U':
        cur.second++;
        break;
      case 'D':
        cur.second--;
        break;
      case 'L':
        cur.first--;
        break;
      case 'R':
        cur.first++;
        break;
    }
    k = (a == vec.first + cur.first) ? (b - cur.second) / (double)vec.second
                                     : (a - cur.first) / (double)vec.first;
    if (k >= 0 && k * vec.first + cur.first == a &&
        k * vec.second + cur.second == b) {
      cout << "Yes" << endl;
      return 0;
    }
  }
  cout << "No" << endl;
}
