#include <bits/stdc++.h>
using namespace std;
const int INF = 1000 * 1000 * 1000 + 1000;
bool Check(int a, int b) {
  if (a < 0 && b > 0) return true;
  if (a > 0 && b < 0) return true;
  return false;
}
int main() {
  int x = 0, y = 0, Dx, Dy;
  string s;
  vector<int> X, Y;
  cin >> Dx >> Dy >> s;
  bool Flag = false;
  X.push_back(0);
  Y.push_back(0);
  for (int i = 0; i < s.size(); i++) {
    if (s[i] == 'U') y++;
    if (s[i] == 'D') y--;
    if (s[i] == 'R') x++;
    if (s[i] == 'L') x--;
    X.push_back(x);
    Y.push_back(y);
  }
  for (int m = 0; m <= 1000; m++)
    for (int i = 0; i < int(X.size()); i++)
      if (((x * m + X[i]) == Dx) && ((y * m + Y[i]) == Dy)) Flag = true;
  int m1 = INF, m2 = INF;
  if (x != 0 && !Check(Dx, x)) m1 = Dx / x;
  if (y != 0 && !Check(Dy, y)) m2 = Dy / y;
  if (m1 != INF) {
    for (int m = max(0, m1 - 100); m < m1 + 100; m++)
      for (int i = 0; i < int(X.size()); i++) {
        if (((x * m + X[i]) == Dx) && ((y * m + Y[i]) == Dy)) {
          Flag = true;
        }
      }
  }
  if (m2 != INF) {
    for (int m = max(0, m2 - 100); m < m2 + 100; m++)
      for (int i = 0; i < int(X.size()); i++)
        if (((x * m + X[i]) == Dx) && ((y * m + Y[i]) == Dy)) Flag = true;
  }
  if (Flag)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}
