rt,dp[i][j][h]表示走到i,j的路径modk能否为h
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e2 + 10;
int n, m, k, ans, cnt[maxn], a[maxn][maxn], dp[maxn][maxn][maxn];
int main() {
scanf("%d %d %d", &m, &n, &k);
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
scanf("%d", &a[i][j]);
a[i][j] %= k;
}
}
for (int h = 0; h < k; h++) {
dp[1][1][h] = (a[1][1] == h);
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (i == 1 && j == 1) continue;
for (int h = 0; h < k; h++) {
if (i > 1) dp[i][j][h] |= dp[i - 1][j][(h - a[i][j] + k) % k];
if (j > 1) dp[i][j][h] |= dp[i][j - 1][(h - a[i][j] + k) % k];
}
}
}
for (int i = 0; i < k; i++) {
if (dp[m][n][i]) {
ans++;
cnt[ans] = i;
}
}
printf("%d\n", ans);
for (int i = 1; i <= ans; i++) printf("%d ", cnt[i]);
return 0;
}