#include <bits/stdc++.h>
using namespace std;
pair<int, int> r[15], b[15];
double cross(pair<int, int> o, pair<int, int> a, pair<int, int> b) {
  return (a.first - o.first) * (b.second - o.second) -
         (a.second - o.second) * (b.first - o.first);
}
bool intersect(pair<int, int> a1, pair<int, int> a2, pair<int, int> b1,
               pair<int, int> b2) {
  if (max(a1.first, a2.first) < min(b1.first, b2.first)) return false;
  if (max(a1.second, a2.second) < min(b1.second, b2.second)) return false;
  if (max(b1.first, b2.first) < min(a1.first, a2.first)) return false;
  if (max(b1.second, b2.second) < min(a1.second, a2.second)) return false;
  if (cross(b1, a2, a1) * cross(a2, b2, a1) < 0) return false;
  if (cross(a1, b2, b1) * cross(b2, a2, b1) < 0) return false;
  return true;
}
int n, m;
bool sol() {
  int s[15];
  int i, j;
  for (i = 0; i < n; i++) s[i] = i;
  do {
    bool ok = true;
    for (i = 0; i < n && ok; i++)
      for (j = i + 1; j < n && ok; j++) {
        if (intersect(r[i], b[s[i]], r[j], b[s[j]])) ok = false;
      }
    if (ok) return true;
  } while (next_permutation(s, s + n));
  return false;
}
int main(void) {
  scanf("%d%d", &n, &m);
  int i;
  for (i = 0; i < n; i++) scanf("%d%d", &r[i].first, &r[i].second);
  for (i = 0; i < m; i++) scanf("%d%d", &b[i].first, &b[i].second);
  if (n != m)
    printf("No\n");
  else if (sol())
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
