#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(){
    vector<int> a(3);
    cin >> a[0] >> a[1] >> a[2];
    sort(a.begin(), a.end());

    if (a[2] - a[1] == a[1] - a[0]) cout << "Yes" << endl;
    else cout << "No" << endl;

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

#define int             long long
#define pb              push_back
#define endl            '\n';
#define mp              make_pair
#define pii             pair<int,int>
#define vi              vector<int>
#define mi              map<int,int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vi,greater<int> >
#define setbits(x)      __builtin_popcountll(x)
#define zrobits(x)      __builtin_ctzll(x)
#define mod             1000000007
#define inf             1e18
#define all(x)          x.begin(), x.end()
#define clr(x)          memset(x, 0, sizeof(x))
#define sortall(x)      sort(all(x))
#define ps(x,y)         fixed<<setprecision(y)<<x
#define deb(x)          cout << #x << "=" << x << endl
#define deb2(x, y)      cout << #x << "=" << x << "," << #y << "=" << y << endl
#define tr(it, a)       for(auto it = a.begin(); it != a.end(); it++)
#define fo(i, n)        for(int i=0; i<n; i++)

int mod_add(int a, int b, int m) {a = a % m; b = b % m; return (((a + b) % m) + m) % m;}
int mod_mul(int a, int b, int m) {a = a % m; b = b % m; return (((a * b) % m) + m) % m;}
int mod_sub(int a, int b, int m) {a = a % m; b = b % m; return (((a - b) % m) + m) % m;}

void test_case(int test_num) {
    vi a(3);
    fo(i,3) {
        cin >> a[i];
    }
    sortall(a);
    if(a[0] - a[1] == a[1] - a[2]) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
    return;
}
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    int _;
    _ = 1;
   //cin >> _;
    
    for(int t = 1; t <= _; t++) {
        test_case(t);
    }
    return 0;
}
