#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
using namespace std;
const int N = 20;
pair<double, double> p1[N], p2[N];
int n, m;
bool tag;
int p[N], vis[N];
bool ok(pair<double, double> a, pair<double, double> b, pair<double, double> c,
        pair<double, double> d) {
  if (!(min(a.first, b.first) <= max(c.first, d.first) &&
        min(c.second, d.second) <= max(a.second, b.second) &&
        min(c.first, d.first) <= max(a.first, b.first) &&
        min(a.second, b.second) <= max(c.second, d.second)))
    return 0;
  double u, v, w, z;
  u = (c.first - a.first) * (b.second - a.second) -
      (b.first - a.first) * (c.second - a.second);
  v = (d.first - a.first) * (b.second - a.second) -
      (b.first - a.first) * (d.second - a.second);
  w = (a.first - c.first) * (d.second - c.second) -
      (d.first - c.first) * (a.second - c.second);
  z = (b.first - c.first) * (d.second - c.second) -
      (d.first - c.first) * (b.second - c.second);
  return (u * v <= 0.00000001 && w * z <= 0.00000001);
}
void dfs(int now) {
  bool flag;
  if (tag) return;
  if (now > n) {
    flag = 1;
    for (int i = 1; i <= n; i++)
      for (int j = i + 1; j <= n; j++)
        if (!ok(p1[i], p2[p[i]], p1[j], p2[p[j]])) return;
    tag = 1;
    return;
  }
  for (int i = 1; i <= m; i++)
    if (!vis[i]) {
      p[now] = i;
      dfs(now + 1);
    }
}
int main() {
  n = read();
  m = read();
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &p1[i].first, &p1[i].second);
  for (int i = 1; i <= m; i++) scanf("%lf%lf", &p2[i].first, &p2[i].second);
  if (n != m) {
    puts("No");
    return 0;
  }
  tag = 0;
  dfs(1);
  if (tag)
    puts("Yes");
  else
    puts("No");
  return 0;
}
