#include <bits/stdc++.h>
const double eps = (1e-10);
using namespace std;
int dcmp(long double a, long double b) {
  return fabsl(a - b) <= eps ? 0 : (a > b) ? 1 : -1;
}
int getBit(int num, int idx) { return ((num >> idx) & 1) == 1; }
int setBit1(int num, int idx) { return num | (1 << idx); }
long long setBit0(long long num, int idx) { return num & ~(1ll << idx); }
long long flipBit(long long num, int idx) { return num ^ (1ll << idx); }
void M() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
int countNumBit1(int mask) {
  int ret = 0;
  while (mask) {
    mask &= (mask - 1);
    ++ret;
  }
  return ret;
}
long long X, Y, x, y, fl;
string st;
long long sx, sy, GX, GY;
int getquad(long long GX, long long GY) {
  int fl;
  if (GX >= 0 && GY >= 0)
    fl = 1;
  else if (GX <= 0 && GY >= 0)
    fl = 2;
  else if (GX <= 0 && GY <= 0)
    fl = 3;
  else
    fl = 4;
  return fl;
}
int main() {
  cin >> x >> y >> st;
  if (x == 0 && y == 0) {
    cout << "Yes\n";
    return 0;
  }
  GX = 0, GY = 0;
  for (int i = 0; i < ((int)(st).size()); i++) {
    if (st[i] == 'U') GY += 1;
    if (st[i] == 'R') GX += 1;
    if (st[i] == 'L') GX -= 1;
    if (st[i] == 'D') GY -= 1;
  }
  if (GX >= 0 && GY >= 0)
    fl = 1;
  else if (GX <= 0 && GY >= 0)
    fl = 2;
  else if (GX <= 0 && GY <= 0)
    fl = 3;
  else
    fl = 4;
  X = 0, Y = 0;
  for (int i = 0; i < ((int)(st).size()); i++) {
    if (st[i] == 'U') Y += 1;
    if (st[i] == 'R') X += 1;
    if (st[i] == 'L') X -= 1;
    if (st[i] == 'D') Y -= 1;
    sx = x - X;
    sy = y - Y;
    if (sx == 0 && sy == 0) {
      cout << "Yes\n";
      return 0;
    }
    if (getquad(sx, sy) != fl) continue;
    bool ok1 = (GX == 0 ? sx == 0 : sx % GX == 0);
    bool ok2 = (GY == 0 ? sy == 0 : sy % GY == 0);
    if (ok1 && ok2 && sx * GY == GX * sy) {
      cout << "Yes\n";
      return 0;
    }
  }
  cout << "No\n";
}
