#include <bits/stdc++.h>
using namespace std;
long long combination(long long n, long long m) {
  long long nume = 1;
  for (long long i = 0; i < m; i++) nume *= (n - i);
  long long demo = 1;
  for (int i = 1; i <= m; i++) demo *= i;
  return nume / demo;
}
template <class T>
class UnionFind {
 private:
  vector<T> par;
  vector<T> rank;
  vector<T> size;

 public:
  UnionFind(T N) : par(N, T()), rank(N, T()), size(N, T()) {
    for (long long i = 0; i < N; i++) {
      par[i] = i;
      rank[i] = 0;
      size[i] = 1;
    }
  }
  inline T root(T x) { return par[x] == x ? x : par[x] = root(par[x]); }
  inline bool same(T x, T y) { return root(x) == root(y); }
  inline T getSize(T x) { return size[root(x)]; }
  void unite(T x, T y) {
    T r1 = root(x);
    T r2 = root(y);
    if (r1 == r2) return;
    if (rank[r1] < rank[r2]) swap(r1, r2);
    if (rank[r1] == rank[r2]) rank[r1]++;
    par[r2] = r1;
    size[r1] += size[r2];
  }
};
int a, b;
string s;
void input() {
  cin >> a, b;
  cin >> s;
}
void solve() {
  if (s.length() == a + b + 1) {
    if (s[a + 1] == '-') {
      s.erase(a + 1);
      if (all_of(s.cbegin(), s.cend(),
                 [](unsigned char c) { return isdigit(c); })) {
        cout << "Yes";
        return;
      }
    }
  }
  cout << "No";
}
int main() {
  input();
  solve();
  return 0;
}
