Solve in Python:
Little penguin Polo has an n × m matrix, consisting of integers. Let's index the matrix rows from 1 to n from top to bottom and let's index the columns from 1 to m from left to right. Let's represent the matrix element on the intersection of row i and column j as a_{ij}.

In one move the penguin can add or subtract number d from some matrix element. Find the minimum number of moves needed to make all matrix elements equal. If the described plan is impossible to carry out, say so.


-----Input-----

The first line contains three integers n, m and d (1 ≤ n, m ≤ 100, 1 ≤ d ≤ 10^4) — the matrix sizes and the d parameter. Next n lines contain the matrix: the j-th integer in the i-th row is the matrix element a_{ij} (1 ≤ a_{ij} ≤ 10^4).


-----Output-----

In a single line print a single integer — the minimum number of moves the penguin needs to make all matrix elements equal. If that is impossible, print "-1" (without the quotes).


-----Examples-----
Input
2 2 2
2 4
6 8

Output
4

Input
1 2 7
6 7

Output
-1
"""http://codeforces.com/problemset/problem/289/B"""
def solve(d, l):
    l.sort()
    m = l[0] % d
    median = len(l) // 2
    res = 0
    for num in l:
        if num % d != m:
            return -1
        res += abs(num - l[median]) // d
    return res

def __starting_point():
    f = lambda: list(map(int, input().split()))
    n, m, d = f()
    l = []
    for i in range(n):
        l += f()
    print(solve(d, l))

__starting_point()