#include <bits/stdc++.h>
using namespace std;
struct ASDF {
  ASDF &operator,(int &a) {
    scanf("%d", &a);
    return *this;
  }
  ASDF &operator,(long int &a) {
    scanf("%ld", &a);
    return *this;
  }
  ASDF &operator,(long long int &a) {
    scanf("%lld", &a);
    return *this;
  }
  ASDF &operator,(char &c) {
    scanf("%c", &c);
    return *this;
  }
  ASDF &operator,(double &d) {
    scanf("%lf", &d);
    return *this;
  }
  template <typename T>
  ASDF &operator,(T &a) {
    cin >> a;
    return *this;
  }
} asdf;
struct ASDFG {
  template <typename T>
  ASDFG &operator,(vector<T> &v) {
    printf("[");
    cout << v[0];
    for (int i = 1; i < int(v.size()); i++) {
      cout << ", " << v[i];
    }
    printf("]");
    return *this;
  }
  template <typename T>
  ASDFG &operator,(T x) {
    cout << x << " ";
    return *this;
  }
} asdfg;
ostream &operator<<(ostream &os, pair<int, int> s) {
  cout << "(" << s.first << ", " << s.second << ")";
  return os;
}
int main() {
  pair<int, int> lastPos;
  string str;
  asdf, lastPos.first, lastPos.second, str;
  pair<int, int> currentPos;
  currentPos.first = 0;
  currentPos.second = 0;
  vector<pair<int, int> > allPos;
  allPos.push_back(currentPos);
  for (int i = 0; i < int(str.size()); i++) {
    switch (str[i]) {
      case 'U':
        currentPos.second++;
        break;
      case 'D':
        currentPos.second--;
        break;
      case 'L':
        currentPos.first--;
        break;
      case 'R':
        currentPos.first++;
        break;
    }
    allPos.push_back(currentPos);
  }
  bool ifPossible = false;
  pair<int, int> diff = currentPos;
  int n;
  for (int i = 0; i < int(allPos.size()); i++) {
    currentPos = allPos[i];
    if (diff.first == 0 && diff.second == 0) {
      if (lastPos.first == currentPos.first &&
          lastPos.second == currentPos.second) {
        ifPossible = 1;
        break;
      }
    } else if (diff.first == 0) {
      if (lastPos.first == currentPos.first &&
          (lastPos.second - currentPos.second) % diff.second == 0 &&
          (lastPos.second - currentPos.second) / diff.second > -1) {
        ifPossible = 1;
        break;
      }
    } else if (diff.second == 0) {
      if (lastPos.second == currentPos.second &&
          (lastPos.first - currentPos.first) % diff.first == 0 &&
          (lastPos.first - currentPos.first) / diff.first > -1) {
        ifPossible = 1;
        break;
      }
    } else {
      if ((lastPos.first - currentPos.first) % diff.first == 0) {
        n = (lastPos.first - currentPos.first) / diff.first;
        if (n > -1 && n * diff.second + currentPos.second == lastPos.second) {
          ifPossible = 1;
          break;
        }
      }
    }
  }
  if (ifPossible)
    cout << "Yes";
  else
    cout << "No";
  return 0;
}
