#include <bits/stdc++.h>
using namespace std;
#define SPEED ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define int long long
#define ld long double
#define fi first
#define se second
#define all(uiet) uiet.begin(),uiet.end()
#define read(UIET, n) for(int i = 0; i < n; ++i) cin >> UIET[i]
#define out(UIET, n) for(int i = 0; i < n; ++i) cout << UIET[i] << " "
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define vpp vector<pair< int, int > >
#define pll pair<int , int >
#define ppll pair < pll , pll >
#define debug(n1) cout << n1 << endl
#define len(a) ((int) (a).size())
#define endl "\n"
#define mod 1000000007
const int INF = (1LL<<60)-1;
const int maxN = 1000001;
int32_t main(){
    SPEED;
    int t = 1;
    //cin >> t;
    while(t--){
        int n, m;
        cin >> n >> m;
        if(abs(n - m) < 3) cout << "Yes" << endl;
        else cout << "No" << endl;
    }
} 
/* stuff you should look for
	* int overflow, array bounds
	* special cases (n=1?)
	* do smth instead of nothing and stay organized
	* WRITE STUFF DOWN
	* DON'T GET STUCK ON ONE APPROACH
*/

#include <bits/stdc++.h>
using namespace std;

int main(){
	int x,y,abs;
    cin >> x >> y;
    abs = max(x-y,y-x);
  	if(abs<3){
      cout << "Yes";
    }
  else{
    cout << "No";
  }
      
}