#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  Point() {}
  Point(long long a, long long b) {
    x = a;
    y = b;
  }
};
Point operator+(const Point &a, const Point &b) {
  return Point(a.x + b.x, a.y + b.y);
}
Point operator-(const Point &a, const Point &b) {
  return Point(a.x - b.x, a.y - b.y);
}
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
int main() {
  long long a, b;
  string s;
  cin >> a >> b;
  Point T = Point(a, b);
  cin >> s;
  if (a == 0 && b == 0) {
    puts("Yes");
    return 0;
  }
  vector<Point> P;
  Point S(0, 0);
  Point avance = S;
  P.push_back(S);
  for (int i = 0; i < s.length(); ++i) {
    if (s[i] == 'U') {
      S = S + Point(dx[0], dy[0]);
    }
    if (s[i] == 'D') {
      S = S + Point(dx[1], dy[1]);
    }
    if (s[i] == 'L') {
      S = S + Point(dx[3], dy[3]);
    }
    if (s[i] == 'R') {
      S = S + Point(dx[2], dy[2]);
    }
    P.push_back(S);
    avance = S;
  }
  bool ok = 0;
  for (int i = 0; i < P.size(); ++i) {
    Point Q = P[i];
    Point R = T - Q;
    long long cte = 0;
    if (avance.x != 0) {
      cte = (R.x) / (avance.x);
    } else {
      if (avance.y != 0) {
        cte = (R.y) / (avance.y);
      }
    }
    if ((avance.x) * cte == R.x && (avance.y) * cte == R.y && cte >= 0) {
      ok = 1;
      break;
    }
  }
  if (ok)
    puts("Yes");
  else
    puts("No");
}
