#include <bits/stdc++.h>
using namespace std;
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
void debugarr(int* arr, int n) {
  cout << "[";
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
  cout << "]" << endl;
}
void debugvec(vector<int> arr) {
  cout << "[";
  for (int i = 0; i < ((int)(arr.size())); i++) cout << arr[i] << " ";
  cout << "]" << endl;
}
int main() {
  int a, b;
  scanf("%d", &a);
  scanf("%d", &b);
  string str;
  cin >> str;
  vector<pair<int, int> > num;
  num.push_back(make_pair(0, 0));
  int x = 0, y = 0;
  for (int i = 0; i < str.length(); i++) {
    if (str[i] == 'U')
      y++;
    else if (str[i] == 'D')
      y--;
    else if (str[i] == 'R')
      x++;
    else
      x--;
    num.push_back(make_pair(x, y));
  }
  int lx = num[((int)(num.size())) - 1].first;
  int ly = num[((int)(num.size())) - 1].second;
  int j = 0;
  for (j = 0; j < ((int)(num.size())); j++) {
    pair<int, int> point = num[j];
    int n = 0;
    if (lx != 0 && ly != 0) {
      if ((a - point.first) % lx != 0) continue;
      n = (a - point.first) / lx;
      if (n < 0) continue;
      if (b == n * ly + point.second) break;
    } else if (lx == 0 && ly != 0) {
      if (a == point.first && (b - point.second) % ly == 0 &&
          (b - point.second) / ly >= 0)
        break;
    } else if (ly == 0 && lx != 0) {
      if (b == point.second && (a - point.first) % lx == 0 &&
          (a - point.first) / lx >= 0)
        break;
    } else {
      if (a == point.first && b == point.second) break;
    }
  }
  if (j == ((int)(num.size())))
    cout << "No" << endl;
  else
    cout << "Yes" << endl;
  return 0;
}
