#include <bits/stdc++.h>
using namespace std;
int rx[15], ry[15], bx[15], by[15];
bool ruse[15], buse[15];
int a[15], temp;
struct node {
  int r_x, r_y;
  int b_x, b_y;
  int xi, bi;
} s[110];
int mj(int x1, int y1, int x2, int y2, int x3, int y3) {
  return (x1 * y2 + x2 * y3 + x3 * y1 - x1 * y3 - x2 * y1 - x3 * y2);
}
bool xl(int x, int y) {
  int x1 = s[x].r_x, y1 = s[x].r_y, x2 = s[x].b_x, y2 = s[x].b_y;
  int x3 = s[y].r_x, y3 = s[y].r_y, x4 = s[y].b_x, y4 = s[y].b_y;
  if (mj(x1, y1, x2, y2, x3, y3) == (x1, y1, x2, y2, x4, y4)) {
    return true;
  }
  return false;
}
bool is(int x, int y) {
  if (!ruse[s[y].xi] && !buse[s[y].bi]) {
    for (int i = 0; i < x; i++) {
      if (xl(a[i], y)) {
        return false;
      }
    }
    ruse[s[y].xi] = buse[s[y].bi] = true;
    return true;
  }
  return false;
}
void solve(int n, int m) {
  for (int i = 0; i < n; i++) {
    temp = 0;
    memset(ruse, false, sizeof(ruse));
    memset(buse, false, sizeof(buse));
    for (int j = i; j < n; j++) {
      if (is(temp, j)) {
        a[temp++] = j;
      }
    }
    if (temp == m) {
      cout << "Yes" << endl;
      return;
    }
  }
  cout << "No" << endl;
  return;
}
int main() {
  cin.tie(0);
  cin.sync_with_stdio(false);
  int r, b;
  cin >> r >> b;
  for (int i = 0; i < r; i++) {
    cin >> rx[i] >> ry[i];
  }
  for (int i = 0; i < b; i++) {
    cin >> bx[i] >> by[i];
  }
  if (r != b) {
    cout << "No" << endl;
  } else {
    int num = 0;
    for (int i = 0; i < r; i++) {
      for (int j = 0; j < r; j++) {
        s[num].bi = j;
        s[num].xi = i;
        s[num].b_x = bx[j];
        s[num].b_y = by[j];
        s[num].r_x = rx[i];
        s[num].r_y = ry[i];
        num++;
      }
    }
    solve(num, r);
  }
  return 0;
}
