#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool fs(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
int sat(int n, int pos) { return n = n | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool cak(int n, int pos) { return (bool)(n & (1 << pos)); }
long long int binPow(long long int a, long long int q, long long int mud) {
  a %= mud;
  if (q == 0) return 1;
  return ((q % 2 == 1 ? a : 1) * binPow(a * a, q / 2, mud)) % mud;
}
template <class T>
double dif(T &a, T &b) {
  double ans = (a.first - b.first) * (a.first - b.first) +
               (a.second - b.second) * (a.second - b.second);
  return sqrt(ans);
}
int main() {
  long long int a, b, c;
  fs(a);
  fs(b);
  fs(c);
  long long int x = (b - a);
  if (a < b && c > 0) {
    if (x % c == 0)
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  } else if (a > b && c < 0) {
    c = abs(c);
    if (x % c == 0)
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  } else if (a == b)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
  return 0;
}
