#include <bits/stdc++.h>
using namespace std;
const int N = 15;
int n, m, p[N];
struct po {
  int x, y;
} a[N], b[N];
bool g[N * N][N * N];
double mult(po a, po b, po c) {
  return (a.x - c.x) * (b.y - c.y) - (b.x - c.x) * (a.y - c.y);
}
bool inters(po aa, po bb, po cc, po dd) {
  if (max(aa.x, bb.x) < min(cc.x, dd.x)) return false;
  if (max(cc.x, dd.x) < min(aa.x, bb.x)) return false;
  if (max(aa.y, bb.y) < min(cc.y, dd.y)) return false;
  if (max(cc.y, dd.y) < min(aa.y, bb.y)) return false;
  if (mult(cc, bb, aa) * mult(dd, bb, aa) <= 0 &&
      mult(aa, dd, cc) * mult(bb, dd, cc) <= 0)
    return true;
  return false;
}
int main() {
  scanf("%d%d", &n, &m);
  if (n != m) {
    puts("No");
    return 0;
  }
  for (int i = 1; i <= n; ++i) scanf("%d%d", &a[i].x, &a[i].y);
  for (int i = 1; i <= m; ++i) scanf("%d%d", &b[i].x, &b[i].y);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      for (int k = 1; k <= n; ++k)
        if (i != k) {
          for (int l = 1; l <= n; ++l)
            if (j != l) {
              if (inters(a[i], b[j], a[k], b[l]))
                g[i * (n + 1) + j][k * (n + 1) + l] = 1;
            }
        }
    }
  }
  for (int i = 1; i <= n; ++i) p[i] = i;
  bool ok;
  for (;;) {
    ok = 1;
    for (int i = 1, j; i <= n && ok; ++i) {
      j = p[i];
      for (int k = 1, l; k <= n && ok; ++k)
        if (k != i) {
          l = p[k];
          if (g[i * (n + 1) + j][k * (n + 1) + l]) ok = 0;
        }
    }
    if (ok) {
      puts("Yes");
      return 0;
    }
    if (!next_permutation(p + 1, p + 1 + n)) break;
  }
  puts("No");
  return 0;
}
