func_code_string: #include <bits/stdc++.h>   using namespace std;   const int iinf = 1e9 + 7;   const long long linf = 1ll << 60;   const double dinf = 1e60;   template <typename T>   inline void scf(T &x) {     bool f = 0;     x = 0;     char c = getchar();     while ((c <  0  || c >  9 ) && c !=  - ) c = getchar();     if (c ==  - ) {       f = 1;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       x = x * 10 + c -  0 ;       c = getchar();     }     if (f) x = -x;     return;   }   template <typename T1, typename T2>   void scf(T1 &x, T2 &y) {     scf(x);     return scf(y);   }   template <typename T1, typename T2, typename T3>   void scf(T1 &x, T2 &y, T3 &z) {     scf(x);     scf(y);     return scf(z);   }   template <typename T1, typename T2, typename T3, typename T4>   void scf(T1 &x, T2 &y, T3 &z, T4 &w) {     scf(x);     scf(y);     scf(z);     return scf(w);   }   inline char mygetchar() {     char c = getchar();     while (c ==     || c ==   n ) c = getchar();     return c;   }   template <typename T>   void chkmax(T &x, const T &y) {     if (y > x) x = y;     return;   }   template <typename T>   void chkmin(T &x, const T &y) {     if (y < x) x = y;     return;   }   void TZL();   void RANK1();   int main() {     TZL();     RANK1();     return 0;   }   void TZL() {     long long k;     int n;     vector<long long> a;     a.clear();     scf(n, k);     for (int i = 0, _end_ = (n); i < _end_; ++i) {       long long x;       scf(x);       a.push_back(x);     }     sort(a.begin(), a.end());     long long ans = 0;     for (int i = 1; i < n; ++i) {       long long x = a[i] - a[0];       if (x % k != 0) {         puts( -1 );         return;       }       ans += x / k;       ;     }     cout << ans << endl;   }   void RANK1() {}   