///////////////////////Loading Payloads.......////////////////////////////
#include<bits/stdc++.h>
#define f(i,a,b) for(int i = a; i < b; i++)
#define fd(i,a,b) for(int i = a; i > b;i--)
#define fld(i,a,b) for(ll i = a ; i > b;i--)
#define ll long long
#define fl(i,a,b) for(ll i = a; i < b; i++)
#define VI vector<int>
#define VP vector<pair<int,int>>
#define VPL vector<pair<ll,ll>>
#define VS vector<string>
#define VL vector<long long>
#define VC vector<char>
#define VF vector<float>
#define VD vector<double>
#define VB vector<bool>
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define fa(i,skill) for(auto i : skill)
#define fr(i,skill) for(VI :: reverse_iterator i = skill.rbegin(); i != skill.rend(); i++)
#define PI pair<int,int>
#define mi map<int,int>
#define ml map<ll,ll>
#define mci map<char,int>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define MAX 1000000007
#define INF 1000000000
#define debug(x) cout<<"This side    ----> "<<#x<<" -> "<<x<<endl
using namespace std;
 
///////////////////////Engine Check.......////////////////////////////
void edit(VI &skill,int n)
{
    f(i,0,n)
        {
            int x;
            cin >> x;
            skill.PB(x);
        }
}
 
 
bool cmp(pair<ll,ll>p1,pair<ll,ll>p2)
{
    if(p1.S > p2.S)
        return true;
    if(p1.S < p2.S)
        return false;
    if(p1.F > p2.F)
        return true;
    else
        return false;
}
void editl(VL &skill,ll n)
{
    fl(i,0,n)
        {
            ll x;
            cin >> x;
            skill.PB(x);
        }
}
void editpl(VPL &skill,ll n)
{
    fl(i,0,n)
        {
            ll x,y;
            cin >> x >> y;
            skill.PB({x,y});
        }
}



bool isGoogles = 0;
bool testcase = 0;
void achilles() 
{

    VL arr;editl(arr,3);
    sort(all(arr));

    if(arr[1]-arr[0] == arr[2]-arr[1])
        cout << "Yes\n";
    else
        cout << "No\n";



}
 
 
///////////////////////3....2....1...Ignition////////////////////////////
 
int main()
{
 
    ios :: sync_with_stdio(0);
    cin.tie(0);
    //freopen("out.txt","r",stdin);
    ll t=1,w=1;
    if(testcase)
    cin >>t;
    // precalc();
    while(t--)
    {   if (isGoogles) {cout << "Case #" << w << ": ";}
        
        achilles();
 
 
        w++;
 
        
 
    }
    return 0;  
}
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp> // Common file
#include<ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
using namespace std;
using namespace __gnu_pbds;
#define FASTIO ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<ll,ll>
#define F first
#define S second
#define ld long double
#define rep(i,a,n) for (int i = (a) ; i < (n); ++i)
#define vi vector<ll>
#define all(v) (v).begin(),(v).end()
#define M_PI 3.14159265358979323846
#define int ll
typedef tree <
pair<int, int>,
     null_type,
     less<pair<int, int>>,
     rb_tree_tag,
     tree_order_statistics_node_update > od_st; // find_by_order() and order_of_key()

const ll mod = 1e9 + 7;
const ll inf = 1e18;

void solve() {
	vector<int> a(3);
	for ( auto &k : a)cin >> k;
	sort(all(a));

	if ( 2 * a[1] == a[0] + a[2]) {
		cout << "Yes" << endl;
	} else {
		cout << "No" << endl;
	}

}


int32_t main() {
	FASTIO
	int t = 1;
	// create();
	// cin >> t;
	ll k = 1;
	while (t--) {
		// cout << "Case #" << k++ << ": ";
		solve();
	}
	return 0;
}


