#include <bits/stdc++.h>
using namespace std;
struct Point {
  int x;
  int y;
};
bool onSegment(Point p, Point q, Point r) {
  if (q.x <= max(p.x, r.x) && q.x >= min(p.x, r.x) && q.y <= max(p.y, r.y) &&
      q.y >= min(p.y, r.y))
    return true;
  return false;
}
int orientation(Point p, Point q, Point r) {
  int val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
  if (val == 0) return 0;
  return (val > 0) ? 1 : 2;
}
bool doIntersect(Point p1, Point q1, Point p2, Point q2) {
  int o1 = orientation(p1, q1, p2);
  int o2 = orientation(p1, q1, q2);
  int o3 = orientation(p2, q2, p1);
  int o4 = orientation(p2, q2, q1);
  if (o1 != o2 && o3 != o4) return true;
  if (o1 == 0 && onSegment(p1, p2, q1)) return true;
  if (o2 == 0 && onSegment(p1, q2, q1)) return true;
  if (o3 == 0 && onSegment(p2, p1, q2)) return true;
  if (o4 == 0 && onSegment(p2, q1, q2)) return true;
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m, i, j, a, b;
  cin >> n >> m;
  if (n != m) {
    cout << "No";
    return 0;
  }
  vector<pair<int, int> > v, vv;
  for (i = 0; i < n; i++) {
    cin >> a >> b;
    v.push_back(make_pair(a, b));
  }
  for (i = 0; i < n; i++) {
    cin >> a >> b;
    vv.push_back(make_pair(a, b));
  }
  int s = 0;
  bool test = true;
  s++;
  for (i = 0; i < n; i++)
    for (j = i + 1; j < n; j++) {
      struct Point p1 = {v[i].first, v[i].second},
                   q1 = {vv[i].first, vv[i].second};
      struct Point p2 = {v[j].first, v[j].second},
                   q2 = {vv[j].first, vv[j].second};
      if (doIntersect(p1, q1, p2, q2)) {
        test = false;
      }
    }
  if (test) {
    cout << "Yes";
    return 0;
  }
  sort(vv.begin(), vv.end());
  while (next_permutation(vv.begin(), vv.end())) {
    bool test = true;
    s++;
    for (i = 0; i < n; i++) {
      if (!test) break;
      for (j = i + 1; j < n; j++) {
        struct Point p1 = {v[i].first, v[i].second},
                     q1 = {vv[i].first, vv[i].second};
        struct Point p2 = {v[j].first, v[j].second},
                     q2 = {vv[j].first, vv[j].second};
        if (doIntersect(p1, q1, p2, q2)) {
          test = false;
          break;
        }
      }
    }
    if (test) {
      cout << "Yes";
      return 0;
    }
  }
  cout << "No";
  return 0;
}
