#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x, y;
  Point(int a, int b) { x = a, y = b; }
  Point() {}
};
Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); }
bool operator==(Point A, Point B) { return (A.x == B.x && A.y == B.y); }
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};
char s[105];
int main() {
  Point P;
  scanf("%d%d", &P.x, &P.y);
  scanf("%s", s);
  int tam = strlen(s);
  Point V(0, 0);
  for (int i = 0; i < tam; ++i) {
    if (s[i] == 'U') V = Point(V.x + dx[0], V.y + dy[0]);
    if (s[i] == 'D') V = Point(V.x + dx[1], V.y + dy[1]);
    if (s[i] == 'L') V = Point(V.x + dx[2], V.y + dy[2]);
    if (s[i] == 'R') V = Point(V.x + dx[3], V.y + dy[3]);
  }
  Point Q(0, 0);
  if (P.x == 0 && P.y == 0) {
    puts("Yes");
    return 0;
  }
  bool find = 0;
  for (int i = 0; i < tam; ++i) {
    if (s[i] == 'U') Q = Point(Q.x + dx[0], Q.y + dy[0]);
    if (s[i] == 'D') Q = Point(Q.x + dx[1], Q.y + dy[1]);
    if (s[i] == 'L') Q = Point(Q.x + dx[2], Q.y + dy[2]);
    if (s[i] == 'R') Q = Point(Q.x + dx[3], Q.y + dy[3]);
    Point QP = P - Q;
    if (V.x == 0 && V.y == 0) {
      if (P == Q) find = 1;
      continue;
    }
    if (V.x == 0) {
      if (QP.x == 0 && QP.y % abs(V.y) == 0 && QP.y / V.y >= 0) find = 1;
      continue;
    }
    if (V.y == 0) {
      if (QP.y == 0 && QP.x % abs(V.x) == 0 && QP.x / V.x >= 0) find = 1;
      continue;
    }
    if (QP.x % abs(V.x) == 0 && QP.y % abs(V.y) == 0) {
      if (QP.x / V.x == QP.y / V.y) {
        if (QP.x / V.x >= 0) find = 1;
      }
    }
    if (find) break;
  }
  if (find)
    puts("Yes");
  else
    puts("No");
}
