#include <bits/stdc++.h>
using namespace std;
typedef struct pair {
  int a;
  int b;
} pairs;
pairs m[220];
int main() {
  int i, j, sa = 0, sb = 0, l, lll;
  long long sx, sy, a, b;
  char s[220], gar[110];
  cin >> a >> b;
  scanf("%s", gar);
  lll = strlen(gar);
  strcpy(s, gar);
  strcat(s, gar);
  l = strlen(s);
  m[0] = (pairs){0, 0};
  for (i = 1; i <= l; i++) {
    switch (s[i - 1]) {
      case 'U': {
        m[i] = (pairs){m[i - 1].a, m[i - 1].b + 1};
        break;
      }
      case 'D': {
        m[i] = (pairs){m[i - 1].a, m[i - 1].b - 1};
        break;
      }
      case 'L': {
        m[i] = (pairs){m[i - 1].a - 1, m[i - 1].b};
        break;
      }
      case 'R': {
        m[i] = (pairs){m[i - 1].a + 1, m[i - 1].b};
        break;
      }
    }
  }
  for (i = 0; i < lll; i++) {
    sx = m[i + lll].a - m[i].a;
    sy = m[i + lll].b - m[i].b;
    if (a != m[i].a && !sx) continue;
    if (b != m[i].b && !sy) continue;
    if (sx) {
      if (sy) {
        if (sx * (a - m[i].a) < 0) continue;
        if (sy * (b - m[i].b) < 0) continue;
        if ((a - m[i].a) % sx == 0 && (b - m[i].b) % sy == 0 &&
            (a - m[i].a) / sx == (b - m[i].b) / sy)
          break;
      } else {
        if (sx * (a - m[i].a) < 0) continue;
        if ((a - m[i].a) % sx == 0) break;
      }
    } else if (sy) {
      if (sx * (a - m[i].a) < 0) continue;
      if (sy * (b - m[i].b) < 0) continue;
      if ((b - m[i].b) % sy == 0) break;
    } else {
      if (a == m[i].a && b == m[i].b) break;
    }
  }
  if (i != lll)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}
