#include <algorithm>
#include <cstdio>
#include <cstdlib>

using namespace std;

int z[1000555],br[1000555],a[555][555],s[555][555];

int main() {

    freopen("sljivik.in", "r", stdin);
    freopen("sljivik.out", "w", stdout);

    int n,m,k,i,j,e,t,op,r1,r2,i2,j2,tt;
    long long res,res2;

    scanf("%d%d%d", &n, &m, &k);

    for(i=0; i<=max(n,m); i++) s[0][i] = 0;

    for(i=1; i<=n; i++) {
        for(j=1; j<=m; j++) {

            scanf("%d", &a[i][j]);
            s[i][j] = (a[i][j] + s[i-1][j]) % k;
        }
    }

    for(i=0; i<=k; i++) {
        z[i] = 0;
        br[i] = 0;
    }

    op = 0; res = 0;
    for(r1=1; r1<=n; r1++) {
        for(r2=r1; r2<=n; r2++) {
            op++;
            t = 0;
            z[0] = op;
            br[0] = 1;
            for(i=1; i<=m; i++) {
                e = s[r2][i] - s[r1-1][i];
                if (e < 0) e = k + e;
                t = (t + e) % k;

                if (z[t] == op) {
                    res += br[t];
                    br[t]++;
                } else {
                    z[t] = op;
                    br[t] = 1;
                }
            }
        }
    }

    printf("%I64lld\n", res);

    // O(N^4) Resenje

    //for(i=0; i<=max(n,m); i++) { s[i][0] = 0; s[0][i] = 0; }

    //res2 = 0;
    //for(i=1; i<=n; i++) {
    //    for(j=1; j<=m; j++) {
    //        s[i][j] = (a[i][j] + s[i][j-1] + s[i-1][j] - s[i-1][j-1]) % k;
    //        for(i2=1; i2<=i; i2++) {
    //            for(j2=1; j2<=j; j2++) {
    //                t = (s[i][j] - s[i2-1][j] - s[i][j2-1] + s[i2-1][j2-1]) % k;
    //                if (t == 0) {
    //                    res2++;
    //                    //printf("%d %d - %d %d\n", i2, j2, i, j);
    //                }
    //            }
    //        }
    //    }
    //}

    //printf("%I64lld\n", res2);

    return 0;
}


