#include <bits/stdc++.h>
using namespace std;
template <class T>
void print(vector<T> v) {
  cerr << "[";
  if (v.size()) cerr << v[0];
  for (int i = (1); i < (v.size()); ++i) cerr << ", " << v[i];
  cerr << "]\n";
}
template <class T>
string i2s(T x) {
  ostringstream o;
  o << x;
  return o.str();
}
vector<string> splt(string s, char c = ' ') {
  vector<string> all;
  int p = 0, np;
  while (np = s.find(c, p), np >= 0) {
    if (np != p) all.push_back(s.substr(p, np - p));
    p = np + 1;
  }
  if (p < s.size()) all.push_back(s.substr(p));
  return all;
}
string s;
long long x, y;
bool ok = false;
pair<long long, long long> sim(string r, int no = 1) {
  long long cx = 0, cy = 0;
  for (int i = (0); i < (r.size()); ++i) {
    if (x == cx && y == cy) ok = true;
    if (r[i] == 'U') cy++;
    if (r[i] == 'D') cy--;
    if (r[i] == 'L') cx--;
    if (r[i] == 'R') cx++;
  }
  cx *= no;
  cy *= no;
  return make_pair(cx, cy);
}
int main() {
  cin >> x >> y;
  cin >> s;
  pair<long long, long long> p = sim(s);
  long long ld = abs(x) + abs(y);
  while (true) {
    if (p.first == 0 && p.second == 0) break;
    long long d = abs(x) + abs(y);
    if (d > 1000 && d > ld) break;
    ld = d;
    long long no = 1;
    long long xd = d;
    while (xd > 10000) {
      no *= 2;
      xd /= 2;
    }
    x -= p.first * no;
    y -= p.second * no;
    sim(s);
  }
  cout << (ok ? "Yes" : "No") << endl;
}
