#include <bits/stdc++.h>
using namespace std;
const int MAXLEN = 102;
int main() {
  int a, b, i, len, k1, k2, k, dx[MAXLEN], dy[MAXLEN];
  char s[MAXLEN];
  while (~scanf("%d%d%s", &a, &b, s)) {
    memset(dx, 0, sizeof(int) * MAXLEN);
    memset(dy, 0, sizeof(int) * MAXLEN);
    len = strlen(s);
    for (i = 1; i <= len; i++) {
      switch (s[i - 1]) {
        case 'U':
          dy[i] = dy[i - 1] + 1;
          dx[i] = dx[i - 1];
          break;
        case 'D':
          dy[i] = dy[i - 1] - 1;
          dx[i] = dx[i - 1];
          break;
        case 'L':
          dx[i] = dx[i - 1] - 1;
          dy[i] = dy[i - 1];
          break;
        case 'R':
          dx[i] = dx[i - 1] + 1;
          dy[i] = dy[i - 1];
          break;
      }
    }
    bool isLocate = false;
    if (dx[len] == 0 && dy[len] == 0) {
      for (i = 0; i <= len; i++) {
        if (a == dx[i] && b == dy[i]) {
          isLocate = true;
          continue;
        }
      }
    } else if (dx[len] == 0) {
      if ((b >= 0 && dy[len] > 0) || (b <= 0 && dy[len] < 0)) {
        for (i = 0; i <= len; i++) {
          k2 = (b - dy[i]) / dy[len];
          if ((a == dx[i]) && (b - dy[i]) % dy[len] == 0 && k2 >= 0) {
            isLocate = true;
            continue;
          }
        }
      }
    } else if (dy[len] == 0) {
      if ((a >= 0 && dx[len] > 0) || (a <= 0 && dx[len] < 0)) {
        for (i = 0; i <= len; i++) {
          k1 = (a - dx[i]) / dx[len];
          if ((a - dx[i]) % dx[len] == 0 && (b == dy[i]) && k1 >= 0) {
            isLocate = true;
            continue;
          }
        }
      }
    } else {
      for (i = 0; i <= len; i++) {
        k1 = (a - dx[i]) / dx[len];
        k2 = (b - dy[i]) / dy[len];
        if ((a - dx[i]) % dx[len] == 0 && (b - dy[i]) % dy[len] == 0 &&
            k1 == k2 && k1 >= 0 && k2 >= 0) {
          isLocate = true;
          continue;
        }
      }
    }
    if (isLocate) {
      printf("Yes\n");
    } else {
      printf("No\n");
    }
  }
  return 0;
}
