#include <bits/stdc++.h>
using namespace std;
inline void swap(long long *a, long long *b) {
  long long temp = *a;
  *a = *b;
  *b = temp;
}
inline long long add(long long a, long long b, long long m) {
  return a + b >= m ? a + b - m : a + b;
}
inline long long sub(long long a, long long b, long long m) {
  return a - b < 0 ? a - b + m : a - b;
}
inline long long mul(long long a, long long b) {
  return a * 1ll * b % 1000000009;
}
inline long long setbits(long long a) { return __builtin_popcount(a); }
inline long long bit32(long long a) { return 31 - __builtin_clz(a); }
inline long long bit64(long long a) { return 63 - __builtin_clzll(a); }
inline long long parent(long long a) { return (a - 1) >> 1; }
bool intersect(pair<double, double> A, pair<double, double> B,
               pair<double, double> C, pair<double, double> D) {
  double a1 = B.second - A.second;
  double b1 = A.first - B.first;
  double c1 = a1 * (A.first) + b1 * (A.second);
  double a2 = D.second - C.second;
  double b2 = C.first - D.first;
  double c2 = a2 * (C.first) + b2 * (C.second);
  double determinant = a1 * b2 - a2 * b1;
  if (determinant == 0) return false;
  return true;
}
void display(pair<double, double> temp[11], long long sz) {
  for (long long i = 0; i < sz; i++)
    cout << temp[i].first << " " << temp[i].second << endl;
}
long long r, b;
pair<double, double> rebel[11];
pair<double, double> base[11];
int main() {
  cin >> r >> b;
  for (long long i = 0; i < r; i++) {
    cin >> rebel[i].first >> rebel[i].second;
  }
  for (long long i = 0; i < b; i++) {
    cin >> base[i].first >> base[i].second;
  }
  if (r != b) {
    cout << "No";
    return 0;
  }
  do {
    bool ans = true;
    for (long long i = 0; i < r - 1; i++) {
      for (long long j = i + 1; j < r; j++) {
        ans = ans & intersect(rebel[i], rebel[j], base[i], base[j]);
      }
    }
    if (ans) {
      cout << "Yes";
      return 0;
    }
  } while (next_permutation(base, base + b));
  cout << "No";
  return 0;
}
