#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
struct Point {
  int x, y;
  Point(int x = 0, int y = 0) : x(x), y(y) {}
  void input() { scanf("%d%d", &x, &y); }
  Point operator-(const Point &a) { return Point(x - a.x, y - a.y); }
};
int cmp(int x) {
  if (x == 0) return 0;
  if (x < 0) return -1;
  return 1;
}
int Cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
bool isinter(Point a1, Point a2, Point b1, Point b2) {
  int c1 = Cross(a2 - a1, b1 - a1), c2 = Cross(a2 - a1, b2 - a1),
      c3 = Cross(b2 - b1, a1 - b1), c4 = Cross(b2 - b1, a2 - b1);
  return cmp(c1) * cmp(c2) < 0 && cmp(c3) * cmp(c4) < 0;
}
int n, m;
Point a[maxn + 5], b[maxn + 5];
int p[maxn + 5];
bool check() {
  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j)
      if (isinter(a[i], b[p[i]], a[j], b[p[j]])) return false;
  return true;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) a[i].input();
  for (int i = 1; i <= m; ++i) b[i].input();
  if (n != m) return 0 * printf("No\n");
  for (int i = 1; i <= n; ++i) p[i] = i;
  do {
    if (check()) return 0 * printf("Yes\n");
  } while (next_permutation(p + 1, p + n + 1));
  printf("No\n");
  return 0;
}
