#include <bits/stdc++.h>
using namespace std;
int a, b, u, r, X, Y, l;
vector<char> prog;
bool prov() {
  bool flag = 0;
  u = Y;
  r = X;
  l = X;
  if (X == a && Y == b) flag = 1;
  for (int i = 0; i < prog.size(); i++) {
    switch (prog[i]) {
      case 'U': {
        Y++;
      }; break;
      case 'D': {
        Y--;
      }; break;
      case 'L': {
        X--;
      }; break;
      default: {
        X++;
      };
    }
    u = max(u, Y);
    r = max(r, X);
    l = min(l, X);
    if (X == a && Y == b) flag = 1;
  }
  return flag;
}
void change(char a, char b) {
  for (int i = 0; i < prog.size(); i++) {
    if (prog[i] == a)
      prog[i] = b;
    else {
      if (prog[i] == b) prog[i] = a;
    }
  }
  return;
}
int x = 0, y = 0;
int main() {
  char c = 0;
  scanf("%d%d%c", &a, &b, &c);
  while (1) {
    scanf("%c", &c);
    if (c == '\n') break;
    if (c == ' ') continue;
    prog.push_back(c);
  }
  X = 0;
  Y = 0;
  if (prov() == 1) {
    cout << "Yes" << endl;
    31;
    return 0;
  }
  if (X == 0 && Y == 0) {
    cout << "No" << endl;
    31;
    return 0;
  }
  if (X == 0) change('U', 'R'), change('D', 'L'), swap(X, Y), swap(a, b);
  if (X < 0) change('L', 'R'), X *= -1, a *= -1;
  X = 0;
  Y = 0;
  prov();
  int f = X, L = l;
  if (a <= 0) {
    while (X + L <= a) {
      if (prov()) {
        cout << "Yes" << endl;
        31;
        return 0;
      }
    }
    cout << "No" << endl;
    31;
    return 0;
  }
  X = ((a - r) / X) * X;
  Y = ((a - r) / f) * Y;
  while (X + L <= a) {
    if (prov()) {
      cout << "Yes" << endl;
      31;
      return 0;
    }
  }
  cout << "No" << endl;
  31;
  return 0;
}
